收藏
回答

wx.chooseVideo()同时传参file和json问题?

如图,我后端是两个参数,第一个是file,第二个是json类型的参数,我不知道怎么传递参数。

postman测试结果如下:

前端js

ouload_vedio() {
    var token = wx.getStorageSync('token')
    var _this = this;
    let data = {
      "title":"筱","description":"xoiasjoa","type":"1","area":"1"
    }
    wx.chooseVideo({
      sourceType: ['album''camera'],
      maxDuration60,
      camera'back',
      success(res) {
        const uploadTask = wx.uploadFile({
          url'http://localhost:8066/upload'// 上传到服务器
          filePath: res.tempFilePath,
          name'file',
          header: {
            "Content-Type""multipart/form-data",
            'token':token
          },
          formData:data,
          
          success(res) {
            const data = JSON.parse(res.data); // 坑一:与wx.request不同,wx.uploadFile返回的是json字符串,需要自己转为JSON对象格式
            console.log(data);
          }
        });
        uploadTask.onProgressUpdate((res) => {
          const uploadProgress = res.progress;
          if (uploadProgress < 100) {
            // 坑2:wx.uploadFile本身有一个this,所以要通过外部var _this = this 把this带进来
            _this.setData({
              uploadPercent: uploadProgress
            });
          } else if (uploadProgress === 100) {
            _this.setData({
              uploadPercent50
            });
          }
          console.log('上传进度', res.progress);
          console.log('已经上传的数据长度', res.totalBytesSent);
          console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
        });
      }
    })
  },


我的第一个测试:

我不传data,然会后端我直接把第二个参数去掉了,写在方法里。

前端不传formdata,就不报错。这样可以正常运行,

然后改成这样(还原第二个参数)

  formData:{
      data:
        {
         "title":"筱","description":"xoiasjoa","type":"1","area":"1"


报错如下:

code: "500", msg: "Content type 'application/octet-stream' not supported", data: null
回答关注问题邀请回答
收藏

1 个回答

  • 若有所悟性
    若有所悟性
    2023-10-12

    刚接触小程序,就想做个仿b站项目,模拟发布投稿,json是分区,标题一类的,file就是视频,但是接口写不出来,官方文档我看不明白,希望大佬可以提点我一下

    2023-10-12
    有用
    回复
登录 后发表内容