Post上传对象

小程序的文件上传接口是在客户端发起一个content-type为multipart/form-data的POST请求,媒体存储服务可以支持使用post form-data的方式来上传文件。步骤如下,

1、在服务端生成post请求的预签名数据

请参考:

2、小程序客户端使用post预签名上传文件

使用wx.uploadFile接口上传文件

  wxupload: function () {
    wx.chooseMessageFile({
      success: (res) => {
        const tempFilePaths = res.tempFiles
        let key = "prefix/ExampleObject.txt"
        // 从服务器获取到post预签名数据
        let data = {
          url: '<post-presign-generate-url>',
          fields: {
            bucket: '<your-bucket>',
            'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
            'X-Amz-Credential': '<post-presign-generate-credential>',
            'X-Amz-Date': '<post-presign-generate-date>',
            Policy: '<post-presign-generate-policy>',
            'X-Amz-Signature': '<post-presign-generate-signature>'
          }
        };
        wx.uploadFile({
          url: data.url,
          filePath: tempFilePaths[0].path,
          name: "file",
          formData: {
            key: key,
            'bucket': data.fields['bucket'],
            'X-Amz-Algorithm': data.fields['X-Amz-Algorithm'],
            'X-Amz-Credential': data.fields['X-Amz-Credential'],
            'X-Amz-Date': data.fields['X-Amz-Date'],
            'X-Amz-Signature': data.fields['X-Amz-Signature'],
            'Policy': data.fields['Policy'],
          },
          success: res => {
            console.log(res);
          },
        })
      }
    })
  }