小幸运qaq
小幸运qaq
  • 发布:2023-10-27 15:11
  • 更新:2024-09-11 15:06
  • 阅读:344

就是我用的是uniapp,要用阿里云的服务端签名直传,后端给我返回了一个url上传链接,里面包含了签名的信息,需要用put请求

分类:uni-app

就是我用的是uniapp,要用阿里云的服务端签名直传,后端给我返回了一个url上传链接,里面包含了签名的信息,需要用put请求,一般上传方法都是uni.uploadFile,但是uni.uploadFile这个不支持put,知道怎么做吗

2023-10-27 15:11 负责人:无 分享
已邀请:
HRK

HRK - 一位热爱uniapp的小少年^v^

可参考以下两片文章

https://ask.dcloud.net.cn/article/38747

https://ask.dcloud.net.cn/question/69859

  • 小幸运qaq (作者)

    这两篇我都看过啦

    2023-11-06 10:35

1***@qq.com

1***@qq.com

所以解决了吗?直接put

a***@126.com

a***@126.com - 亨瑞的uni-app

我也是遇到这个问题,然后是需要将uni-app打包成Android app来用,然后需要使用put上传图片到zmazon bucket上。

我这种情况是需要使用plus来做,因为官方的uni.uploadFile确实改造不了,以下的尝试行不通:

const task = uni.uploadFile({  
            url: url, //仅为示例,非真实的接口地址  
            filePath: filePath,  
            // name: 'file',  
            header: {  
                // 'Content-Type':'application/x-www-form-urlencoded'  
                // 'Content-Type': 'image/png'  
                'Content-Type' : 'multipart/form-data'   
            },  
            method: 'PUT',  
            formData: {  
                '_method': 'PUT'  
            },  
            success: (uploadFileRes) => {  
                console.log('上传成功----:', uploadFileRes.data);  
            },  
            fail: (err) => {  
                console.log('上传失败----:', err);  
            }  
        });

然后必须得使用plus.io来读取filePath成base64:

// #ifdef APP  
    plus.io.resolveLocalFileSystemURL(filePath, function( entry ) {  
            // 可通过entry对象操作test.html文件   
            console.log("----resolveLocalFileSystemURL--callback:", entry.getFile)  
            entry.file( function(file){  
                var fileReader = new plus.io.FileReader();  
                console.log("getFile:" + JSON.stringify(file));  
                fileReader.readAsText(file, 'utf-8');  
                fileReader.onloadend = function(evt) {  
                    console.log("11" + evt);  
                    console.log("evt.target" + evt.target);  
                    console.log(evt.target.result);  
                }  
                console.log(file.size + '--' + file.name);  
            } );  
        }, function ( e ) {  
            console.log( "Resolve file URL failed: " + e.message );  
        } );  
    // #endif

其实uni-app的HBuilder X编译器会报语法错误,说entry没有file方法,只有getFile方法,但其实只有file方法,getFile是undefined.

然后你看看这篇文章:https://ask.dcloud.net.cn/question/106770?notification_id-84803rf-falseitem_id-25486 ,将arraybuffer通过uni.request去设置为put上传。

要回复问题请先登录注册