首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发送POST请求,使用rn-fetch-blob下载文件?

如何发送POST请求,使用rn-fetch-blob下载文件?
EN

Stack Overflow用户
提问于 2019-03-23 10:46:17
回答 1查看 3.2K关注 0票数 0

我正在使用rn-获取-blob库下载文件并将其保存到设备中,并且我成功地使用了GET请求(如:.fetch('GET', "http://api.pdflayer.com/api/convert?access_key=MY_ACCESS_KEY&document_url=URL_PATH") ),但是我使用的API只接受post请求,所以我尝试了这一点,但没有成功:

代码语言:javascript
复制
const { config, fs } = RNFetchBlob;
let DownloadDir = fs.dirs.DownloadDir;
let options = {
  fileCache: true,
  addAndroidDownloads : {
    useDownloadManager : true,
    path: DownloadDir + "/file.pdf"
  }
};
const data = JSON.stringify({
  access_key: "MY_ACCESS_KEY",
  document_url: "https://pdflayer.com/downloads/invoice.html"
});
config(options)
  .fetch('POST', 'http://api.pdflayer.com/api/convert', {body: data})
    .then((res) => {
       console.log(res);
    })
    .catch((err) => {
       console.log(err)
    })

如果我没有正确发送我的请求,那我该怎么做呢?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-03-23 11:17:36

根据rn-fetch-blob的文档:

Headers : HTTP请求的对象(可选)标头,标题的值应该是串的,如果你上传二进制文件,内容类型应该是应用程序/八进制流或多部分/表单-数据(见上面的例子)。 正文: HTTP的String2000Array(可选)主体,正文可以是BASE64字符串,也可以是包含对象元素的数组,每个元素都有两个必需的属性名称、数据和可选属性文件名,一旦设置了文件名,数据属性中的内容将被视为文件或BASE64字符串的路径,该文件或BASE64字符串将在稍后被转换为字节数组。

我认为您应该为请求定义内容类型,并修改代码,如下所示:

代码语言:javascript
复制
// Post binary data using base64 encoding
RNFetchBlob.fetch('POST', 'http://myupload.com/upload', { 
        'Content-Type' : 'application/octet-stream' 
    }, RNFetchBlob.base64.encode(mydata))

// Post binary data from existing file
RNFetchBlob.fetch('POST', 'http://myupload.com/upload', { 
        'Content-Type' : 'application/octet-stream' 
    }, RNFetchBlob.wrap(path_to_the_file))

// Post form data 
RNFetchBlob.fetch('POST', 'http://myupload.com/upload', { 
        'Content-Type' : 'multipart/form-data' 
    }, [
        { name : 'user_name', data : 'Bill' },
        // binary field data from a file path, use `wrap` method to wrap the path
        { name : 'avatar', filename : 'avatar.jpg', data : RNFetchBlob.wrap(path_to_the_file) },
        // binary field data encoded in BASE64
        { name : 'pet-avatar', filename : 'pet-avatar.jpg', data : RNFetchBlob.base64.encode(image_data) },
    ])

我希望这有帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55312896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档