发布multipart / form-data时,React Native fetch会引发错误

时间:2018-04-25 10:25:00

标签: react-native react-native-android react-native-ios

这就是我尝试将图像作为multipart / form-data发布到服务器的方法。

$new_post = wp_insert_post($args);
  

但它显示错误:预期的动态类型字符串但有类型   对象

3 个答案:

答案 0 :(得分:1)

正如docs formData.append(name, value, filename);

中所述

其中的value字段接受USVStringBlob,因为您将object传递给它,因此会引发错误。

您需要将image转换为blob,附加并上传。

如果你有图片的base64,那么你可以使用blob api

直接将其转换为fetch
fetch(base64URL)
.then(res => res.blob())
.then(blob => console.log(blob))

否则,您可以结帐RN-fetch-blobmultipart/ formData示例。

答案 1 :(得分:0)

两天后,尝试了很多事情,我让代码工作了一些修改。

RNFetchBlob.fetch('POST', url, {
  'Content-Type': 'multipart/form-data',
}, [ 
    { name: 'file', filename: 'photo.jpg', type: 'image/png', data: RNFetchBlob.wrap(src) }
  ]) .then((resp) => {
    console.log(resp.text());
  }).catch((err) => {
    console.log(err);
  });

答案 2 :(得分:0)

我稍微修改了@ unknown123给出的解决方案。它为我工作。 这是解决方案。

首先,安装npm软件包rn-fetch-blob

从“ rn-fetch-blob”导入RNFetchBlob;

RNFetchBlob.fetch('PUT',url,{'Content-Type':'multipart / form-data'}, Platform.OS ==='ios'吗? RNFetchBlob.wrap(filePath): `RNFetchBlob-$ {filePath}`)

请注意,就我而言,IOS和Android设备具有不同的文件路径。我们使用rn-fetch-blob

以不同的方式处理它

示例文件路径变量数据

  1. IOS设备-

“ /用户/ Niveditha /库/开发人员/ CoreSimulator / Devices / B41EB910-F22B-4236-8286-E6BA3EA75C70 / data /容器/数据/应用程序/ B88777C6-6B10-4095-AB67-BB11E045C1DE / tmp / react-native -image-crop-picker / img.jpg”

  1. Android设备-

文件:// /storage/emulated/0/Android/data/com.uploadcameraroll/files/Pictures/img.jpg”