junjieit
junjieit
  • 发布:2016-06-16 13:14
  • 更新:2017-04-05 20:51
  • 阅读:6777

uploader 上传图片,上传成功,但数据错误

分类:HBuilder

详细问题描述
上传图片到七牛云,上传成功,但上传数据非图片。

重现步骤
[步骤]
1.plus.gallery.pick获取图片路径,

  1. plus.zip.compressImage压缩图片。用压缩参数dst更改压缩后图片路径为 '_doc/' 本地路径。
  2. plus.uploader.createUpload上传图片 method: "POST"
    [结果]
    上传成功,但上传文件非图片。未返回表头信息
    [期望]
    1.上传图片成功
  3. 可以返回表头,用chrome设备调试,在network中能看到具体信息

运行环境
[系统版本]
Android 5.1; XT1085 Build/LPE23.32-70; wv)
[IDE版本]
HBuilder
7.2.2.201606152019

附件
[代码片段]

        // 压缩图片  
        console.log(files[0])                         
        plus.zip.compressImage({  
            src:files[0],  
            dst:'_doc/'   fileName   '.jpg',  
            quality:quality  
        },

files[0]输出为 file:///storage/emulated/0/tencent/MicroMsg/WeiXin/mmexport1464605187164.jpg
'_doc/' fileName '.jpg' 输出为:_doc/2016616124653736_0.jpg

//上传图片  
var task = plus.uploader.createUpload("http://upload.qiniu.com", {  
            method: "POST"  
        },  

//添加待上传的图片  
var new_file = 'file://' plus.io.convertLocalFileSystemURL('_doc/' files[i]) '.jpg';  
//new_file 输出为file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/2016616125742618_0.jpg  
            task.addFile(new_file, {  
                key: file.getUid()  
            });  
            task.addData("token", uptoken );//七牛所需参数  
            task.addData("file", files[0] '.jpg'));//文件名 输出为2016616125742618_0.jpg  
            task.addData("key", file.getUid() '.jpg' );//新文件名 输出为43699522.jpg

[备注]
七牛要求上传格式:
http://developer.qiniu.com/code/v6/api/kodo-api/up/upload.html

联系方式
[QQ]601988853
[电话]18929385741

调了好几天都没调出来,望帮助,谢谢。

2016-06-16 13:14 负责人:无 分享
已邀请:
iMarkr

iMarkr

那是因为你的给七牛云的file参数不对

    task.addFile(new_file, { key: "file" });  // 这里才是七牛云需要的file文件  
    task.addData("token", uptoken );  // 七牛所需参数  
    task.addData("key", file.getUid() '.jpg' );  // 新文件名 输出为43699522.jpg
  • 6***@qq.com

    你好请问 怎么实现多图片上传

    2017-04-13 21:02

DCloud_App_Array

DCloud_App_Array

确认具体问题是什么,服务器返回什么数据?建议抓包看下传输的数据内容。
Uploader采用的是HTTP标准multipart/form-data数据格式,这个与七牛个格式规范是一致的。
另外注意的是如果需要提交文件,请使用addFile方法(不是addData方法),参考规范:
http://www.html5plus.org/doc/zh_cn/uploader.html#plus.uploader.Upload.addFile

junjieit

junjieit (作者)

感谢你的回答!

但是不清楚为什么 uploader 上传,用chrome浏览器-开发者工具-Newwork 不能获取到请求及响应。
尝试直接写xhr上传才获取到。

我这里用uploder上传是用到了addFile方法的,是用图片的平台地址。

//new_file 输出为file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/2016616125742618_0.jpg  
            task.addFile(new_file, {  
                key: file.getUid()    //随机数  
            });

addData方法不是传自定义参数的吗?

陨落星辰

陨落星辰

var task = plus.uploader.createUpload("http://upload.qiniu.com/", {  
                method: "POST"  
            },  
            function(t, status) { //  
                console.log(t.responseText);  
                var data = JSON.parse(t.responseText);  
                    console.log(data.message);  
                if (status == 200) {  
                    wt.close();  
                } else {  
                    mui.toast("上传失败:" + status);  
                    wt.close();  
                }  
            }  
        );  
        var uid = Math.floor(Math.random() * 100000000 + 10000000).toString();  
        var scope="test";  
        var type=uid+url.substring(url.lastIndexOf("."),url.length);  
        var putPolicy = {  
                scope: scope + ":" + type,  
                deadline: new Date().getTime()  
            }  
        var token = genUpToken(app.AK, app.SK, putPolicy);  
        task.addData("key", type);  
        task.addData("scope", scope);  
        task.addData("token", token);  
        console.log(url);  
            task.addFile(url, {  
                "key":"file",  
                "name": "file"  
            });  
        task.start();
  • 陨落星辰

    在于addFile的key和name 必须为file

    2016-07-01 18:03

androidjdx

androidjdx

我正在用七牛云的上传图片功能,我想问下你是用七牛云的JavaScript SDK的吗?

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