0

我刚开始准备使用react-native-qiniu,发现文档不太看得懂,然后自己手写。

    //图片key
let randomName= type+Date.now()+'.jpeg';
    //生成token
    let putPolicy = new Auth.PutPolicy2(
        {scope: "kaili:"+randomName}
    );
    let uptoken = putPolicy.token();
    //数据对象
    let formData = new FormData();       
    formData.append("token", uptoken);  
    formData.append("key", randomName);
    formData.append("file", source);
    //上传数据
    fetch('http://up-z2.qiniu.com/',{
        method:'POST',
        headers:{
            'Content-Type':'multipart/form-data',
        },
        body:formData,
    })
        .then((response) => response.json())
        .then((responseData)=>{
    console.log('responseData=',responseData);

    })
    .catch((error)=>{console.error('error=',error)});

其中type为我自己定义名字的前缀(仅仅名字)source为图片资源的本地地址
说到本地地址》我尝试用:

file:///storage/emulated/0/DCIM/IMG_20170930_115646.jpg
content://media/external/images/media/25183

这两种格式,服务器返回都为200,说明上传成功,连接没有问题。但是,问题上是:
服务器只有:


图片就是:55b,显示如下:

应该是我有没有把图片资源给上传过来,请问我如何解决怎么样的问题。
还有想了解file://开头和content://的区别,怎么上传。谢谢!!

1个回答

0

已采纳

file:// 和content://都是可以的
原因是配置formData对象配置正确。具体参考七牛直传,或者直接查看react-native-qiniu里面uploadFile方法(上传方法函数,具体忘记)查看源码。
key为file的改为下面即可
formData.append('file',{source:url,key:key,name:name})

撰写答案