uview+vue2+uniapp上传文件

效果图

1.template部分

<view class="picter">
          <view class="chose"> 选择文件: </view>

          <view class="check">
            <u-upload
              :fileList="fileList1"
              @afterRead="afterRead"
              @delete="deletePic"
              name="1"
              :multiple="true"
              :maxCount="9"
              width="112rpx"
              accept="file"
              height="109rpx"
              :deletable="true"
              :previewImage="true"
            >
              <image
                src="/static/up.png"
                mode="widthFix"
                style="width: 112rpx; height: 110rpx"
              ></image>
              <!-- <u-icon name="plus"></u-icon> -->
            </u-upload>
          </view>
        </view>

2.js部分
定义变量:fileList1: [],FileId: [],

import config from "../../config/index";
import { GET_TOKEN } from "../../utils/user";
methods:{

  deletePic(e) {
    console.log(this.FileId,'view');
      console.log(e,'eee');
      this[`fileList${e.name}`].splice(e.index, 1);
      console.log(this[`fileList${e.name}`],'蛤?');
      this.FileId = this.FileId.filter((item) => item !== e.file.id);
    },
     // 新增图片
     async afterRead(event) {
      console.log(event);
      // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
      let lists = [].concat(event.file);
      let fileListLen = this[`fileList${event.name}`].length;
      lists.map((item) => {
        console.log("1111");
        this[`fileList${event.name}`].push({
          ...item,
          status: "uploading",
          message: "上传中",
        });
      });
      for (let i = 0; i < lists.length; i++) {
        console.log(lists[i].url, "2222");

        await this.uploadFilePromise(lists[i].url);
        // let id = JSON.parse(result);
        // console.log(result,'result');
        let item = this[`fileList${event.name}`][fileListLen];
        this[`fileList${event.name}`].splice(
          fileListLen,
          1,
          Object.assign(item, {
            status: "success",
            message: "",
            // url: '',
            id: this.Id,
          })
        );
        fileListLen++;
      }
    },
    uploadFilePromise(url) {
      return new Promise((resolve, reject) => {
        let a = uni.uploadFile({
          //url: this.$common.domain+'/api/common/upload', // 仅为示例,非真实的接口地址
        url: config.url+'Wjgl/uploadFiles',  
           
          filePath: url,
          name: "files",
          formData: {},
          header: {
            Authorization: "Bearer " + GET_TOKEN().token,
          },
          success: (res) => {
            this.Id = JSON.parse(res.data).data.id;
            this.FileId.push(JSON.parse(res.data).data.id);
            setTimeout(() => {
              resolve(res.data.data);
            }, 1000);
          },
        });
      });
    },
    //保存
    save(){
   // this.form.filesId为所要
this.form.filesId=this.FileId.toString()
}
}

3.样式部分

<style lang="scss">
.picter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
  .chose {
    width: 65px;
    margin-left: 25px;
    color: black;
  }
  .check {
    margin-right: 30px;
    width: 280px;
  }
}
</style>

附:上面的config、GET_TOKEN
1)
2)

4.至此,已经完成了文件上传的部分。接下来,完成从后端获取数据,进行文件回显(简易版)。
js部分
options.filesId为文件id用‘,’隔开的字符串。

onLoad(options) {
 this.form= options;
  if(options.filesId){
    this.form.fileInfoList=JSON.parse(options.fileInfoList)
    this.FileId=options.filesId.split(',')
    this.FileId.forEach(item=>{
      this.fileList1.push({url: 'blob:http://localhost:8080/1bf0a2bd-e961-4f7f-87e5-485928e41xxx'})
    })
  }
}
uniapp是一种基于Vue.js的跨平台开发框架,可以用于开发iOS、Android和Web应用程序。它提供了丰富的组件和API,使开发者能够轻松地构建功能强大的应用程序。 要在uniapp中实现录音、上传和与Java后端交互的功能,可以按照以下步骤进行操作: 1. 引入uni组件和uView组件:根据引用中提到的uni组件和uView组件,确保已经在uniapp项目中引入了这些组件。 2. 授权录音:使用uniapp提供的API进行录音授权。可以使用uni.request()方法向后端发送请求,获取录音授权。 3. 录制音频:使用uniapp提供的API进行录音操作。可以使用uni.startRecord()方法开始录音,使用uni.stopRecord()方法停止录音。 4. 保存录音文件:将录制的音频文件保存到本地或者上传到服务器。可以使用uni.saveFile()方法将录音文件保存到本地,使用uni.uploadFile()方法将录音文件上传到服务器。 5. 与Java后端交互:使用uniapp提供的API与Java后端进行数据交互。可以使用uni.request()方法发送请求,与后端进行数据传输。 以下是一个示例代码,演示了uniapp中录音、上传和与Java后端交互的过程: ```javascript // 授权录音 uni.authorize({ scope: 'scope.record', success() { // 录制音频 uni.startRecord({ success(res) { // 保存录音文件 uni.saveFile({ tempFilePath: res.tempFilePath, success(saveRes) { // 上传录音文件到服务器 uni.uploadFile({ url: 'http://your-java-backend.com/upload', filePath: saveRes.savedFilePath, name: 'file', success(uploadRes) { console.log('上传成功', uploadRes.data); }, fail(uploadErr) { console.log('上传失败', uploadErr); } }); }, fail(saveErr) { console.log('保存录音文件失败', saveErr); } }); }, fail(res) { console.log('录音失败', res); } }); }, fail() { console.log('录音授权失败'); } }); ``` 请注意,以上代码仅为示例,具体实现可能需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值