使用映像数组创建FormData,并在React Native中使用rn fetch blob上传



我正在使用rn提取blob库将一些图片上传到服务器。但我遇到了不同类型的错误,比如内容类型上没有边界,或者FormData结构本身有错误,比如"NSMutableDictionary类型无法转换为NSString",我很沮丧。

我得到了一个像这样的图像阵列:

var images = [
{name 'pic1', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
{name 'pic2', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
{name 'pic3', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
];

然后我创建FormData如下:

const formData = new FormData();
formData.append('id', userId)   // <-- numeric type
formData.append('pictures', images);

我正在用'Content-Type': 'multipart/form-data'处理来自RNFetchBlob的post请求,并将formData直接传递给它

有什么问题吗?我在某个地方读到FormData只允许字符串或Blob,我应该从数组中创建Blob吗?我该怎么做?

提前谢谢。

经过一番努力,我在其他一些github中找到了一个关于我必须传递参数的结构的解决方案。这对我的具体情况来说是正确的。

var reqData = [
{ name: 'id', data: response.data.id }
];
this.state.images.forEach((image) => {
reqData.push({
data: image.imageFile,
filename: image.fileName.split('.')[0] + '.jpg',
name: 'pictures',
type: image.type
})
});

但基本上这就是一个例子:

var params = [
{ 
name: 'id',
data: 43
},
{ 
name: 'image',
data: RNFetchBlob.wrap(imagePath),
filename: 'image1.jpg',
type: 'image/jpeg'
},
{ 
name: 'image',
data: RNFetchBlob.wrap(imagePath),
filename: 'image2.jpg',
type: 'image/jpeg'
},
];

最新更新