logo 范 · 拾光录
网址收集 关于作者 Github Gitee
杂文随笔4
Hexo博客:基础使用Hexo博客:Next主题Hexo博客:Next进阶使用Hexo博客:Next高级配置
前端编程3
前端基础知识16
UniApp15
Vue框架19
Java编程7
Java基础知识14
SpringBoot31
SpringMVC14
MyBatis8
SpringCloud15
RocketMQ1
MyCat1
数据库4
MySQL6
Redis7
MongoDB10
H21
Java技术栈4
知识整理分布式锁的实现方案MySQL事务MySQL的锁
软件工具箱14
IDEAGitMavenGradleNginx安装Nginx配置JMeter压测OllamaPicGoRustFSVSCodeDockerObsidianObs录制
Linux知识11
树莓派安装及使用ArchLinux:常用软件ArchLinux:基础系统安装ArchLinux:深度优化ArchLInux:图形化界面安装ArchLinux:Nirifrp内网穿透Jar启动脚本Linux常用命令VirtualBox安装CentOSVirtualBox安装Ubuntu
Python编程6
Python基础知识Python语法yolo目标检测OpenCV的使用及树莓派平台condauv
创意设计2
Blender:入门知识UI设计基础知识
AI相关9
Claude CodeHermes AgentOpenAI基本使用OpenAI工具调用OpenAI记忆管理OpenAI推理执行OpenAI开发框架Langchainllama.cpp

代码示例

<template>
  <scroll-view class="org-container" scroll-y enhanced :show-scrollbar="false">
    <view class="com-container">

      <!-- 自定义导航 -->
      <up-navbar :placeholder="true" :autoBack="true" title="课程表"></up-navbar>

      <!-- 主要内容 -->
      <view class="" style="color: #777;margin-top: 36rpx;text-align: center;">

      </view>

      <image src="https://xs-face.oss-cn-shanghai.aliyuncs.com/202507/1950904723374788609_875364.jpg" mode="aspectFill"
        style="width: 100%;height: 700rpx;"></image>

      <view class="btn" v-if="identity == 1">
        <up-button type="primary" size="small" text="上传课程表" @click="chooseImage"></up-button>
      </view>

    </view>

  </scroll-view>
</template>

<script setup>
  import {
    ref,
    reactive,
    getCurrentInstance
  } from 'vue';

  import {
    onShow,
    onLoad,

  } from '@dcloudio/uni-app'

  import httpUtil from '../../common/httpUtil.js'

  const {
    proxy
  } = getCurrentInstance()

  let identity = uni.getStorageSync('identity')

  function chooseImage() {
    uni.chooseImage({
      count: 1, // 最多可以选择的图片张数
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机
      success: (res) => {
        let url = res.tempFilePaths[0]
        console.log(url);
        uploadImage(url)
      },
      fail: (err) => {
        console.error('选择图片失败', err);
      }
    });
  }

  function uploadImage(url) {
    uni.showLoading({
      title: '上传中...'
    });
    // 使用 uni.uploadFile 上传图片
    uni.uploadFile({
      // url: 'https://xishangkeji.com/schoolapifront/file/upload', // 你的服务器接口地址
      url: 'http://localhost:8997/file/upload', // 你的服务器接口地址
      filePath: url,
      name: 'file', // 后端接收文件的字段名
      header: {
        'Content-Type': 'multipart/form-data',
        // 如果有需要,可以添加 token 等信息
        'token': uni.getStorageSync('token')
      },
      formData: {},
      success: (uploadRes) => {
        uni.hideLoading();
        if (uploadRes.statusCode === 200) {
          const data = JSON.parse(uploadRes.data);
          // uni.showToast({
          //   title: '上传成功',
          //   icon: 'success'
          // });
          console.log('上传成功', data);
          // 处理成功后的逻辑,比如保存图片 URL
          if (data.code == 200) {
            dealUpload(data.data)
          }

        } else {
          uni.showToast({
            title: '上传失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        uni.hideLoading();
        uni.showToast({
          title: '上传失败',
          icon: 'none'
        });
        console.error('上传失败', err);
      }
    });
  }

  function dealUpload(url) {
    httpUtil('/tbTimetable/add', 'POST', {
      "classId": uni.getStorageSync('classId'),
      "img": url,
    }, (res) => {
      console.log(res);
      if (res.code == 200) {
        uni.showToast({
          title: '上传成功',
          icon: 'success'
        });
      } else {
        uni.showToast({
          title: res.msg,
          icon: 'none'
        });
      }
    })
  }
</script>

<style lang="scss">
  .btn {
    margin-top: 28rpx;
  }
</style>
代码示例