土鸡同学
土鸡同学
  • 发布:2019-12-20 00:00
  • 更新:2022-08-19 10:31
  • 阅读:4713

请问 uni-app 如何使用put方法上传文件

分类:uni-app

由于我用的接口,在修改内容的时候,只支持PUT方法,而uniapp提供的上传文件的的方式,只有POST方法,求大神解惑

2019-12-20 00:00 负责人:无 分享
已邀请:
kl_____

kl_____ - ?????

兄弟这个问题解决了吗?

orange123456

orange123456 - 80后IT男

可以考虑将文件数据转成ArrayBuffer,再使用put

  • 初学者123

    不是数据类型的问题吧?是 uni.uploadFile用的是指定的 post方法,而存储服务用的都是 put 方法

    2021-01-18 12:16

初学者123

初学者123 - 80后IT男

同问,这个问题解决了吗?

[已删除]

[已删除]

社区真的太不活跃,找个问题,都找不到答案

  • 深海智行

    见此问题,必自醒之。

    三年了竟无人回答,三年了我竟未回答。

    翻看了文档,并未发现可以直接使用的方法,不过能使用 webview+xhr 来实现,如果其他人有更好的方法也请不吝赐教。

    2021-11-25 15:18

  • [已删除]

    回复 深海智行: 我用uni.choseimage传递的文件,让xhr来上传也是失败。你是怎么做的

    2021-11-25 16:09

  • 深海智行

    回复 [已删除]: App 还是 H5?如果别人猜错了请及时纠正。

    2021-11-25 16:37

  • 深海智行

    回复 [已删除]: 你说的失败是怎么失败?

    2021-11-25 16:39

  • 深海智行

    回复 [已删除]: 我最初的回答是以 App 端为假设的,因为 H5 连 webview 都不必用,直接可以用 xhr 上传。

    2021-11-25 16:40

  • [已删除]

    回复 深海智行: 我在uniapp嵌入h5页面,用webview进行加载,使用uni.choseimage选择图片后,把文件传到h5.使用xhr进行文件put上传。通过查看上传情况,发现文件并没有上传成功

    2021-11-25 16:54

  • [已删除]

    回复 深海智行: 我通过plus转换成file对象,传递到h5后,进行上传,文件也是没有上传上去。对比查看了,使用<input type='file'/>后,发现,打印出来的对象,uniapp是[Object,Object],而input标签的文件对象是[Object,File],后者是可以上传到oss,前者无法上传上去

    2021-11-25 16:57

  • 深海智行

    回复 [已删除]: 这不扯淡么,plus 怎么能转换成 file 对象?

    2021-11-25 17:37

  • 深海智行

    回复 [已删除]: 这不扯淡么,什么叫“uniapp是[Object,Object]”,uniapp 是分 App 和 H5 的,你在 H5 里调用才是 File,你在 App 里调用就是 Object

    2021-11-25 17:39

  • [已删除]

    回复 深海智行: plus.io.resolveLocalFileSystemURL(filePath, function(entry) {})并没有在扯淡,这个把本地路径转为file对象。

    2021-11-25 18:01

  • [已删除]

    回复 深海智行: 什么叫“uniapp是[Object,Object]”,麻烦你认真看一下。我说的H5里用input标签返回的是File对象,uniapp用uni.choiseimage,没有返回File对象。所以我通过plus转换了一下。跟你说的扯淡不扯淡,并没有多大关系。

    2021-11-25 18:03

  • [已删除]

    回复 深海智行: 另外的。我当然知道返回的是obj对象。由于我使用xhr的时候,并不能把obj上传上去。所以我才想赚成file对象。

    2021-11-25 18:04

  • [已删除]

    回复 深海智行: xhr.send(file);就是这个file。我要怎么让uniapp选择的图片可以上传上去。

    uni.chooseImage({

    count: 1,

    sizeType: ['origubak', 'compressed'],

    sourceType: ['camera'],

    success: res => {

    console.log("camera:", JSON.stringify(res))

    if (this.accessoryList.length + res.tempFiles.length > 10) {

    uni.showToast({

    title: "最多只能选择10个文件",

    position: center

    })

    } else {

    this.accessoryList = this.accessoryList.concat(res.tempFiles)

    }

    }

    })

    我是直接把集合传递过去了。

    2021-11-25 18:12

  • [已删除]

    回复 深海智行: 真tmd傻逼。老子用这个方法已经弄好了。你这个白痴

    2021-11-29 18:11

  • [已删除]

    回复 深海智行: 就这逼样,还tmd教育领域。脑残吧

    2021-11-29 18:11

  • 深海智行

    回复 [已删除]: 二批,帮你让人后悔

    2021-11-29 18:17

  • 深海智行

    回复 [已删除]: 一边骂论坛不活跃,一边将回答你问题的人追着骂,你吃饱了撑的到人家别的回复下面去骂?还私信骂?已经举报,希望早点处理掉你这种垃圾。

    2021-11-29 18:21

h***@icloud.com

h***@icloud.com

Uniapp 通过 get 请求获取文件字节流后,再使用PUT请求上传文件到 OBS (临时URL授权上传方式)。没有想的那么复杂。

该问题目前已经被锁定, 无法添加新回复