async postFileUpload(payload) {
const rnfetchfile = RNFetchBlob.wrap(payload.uri);
try {
console.log(
'POST',
'https://******.***.**/******/***/upload_*******_file',
{
...this.config,
'Content-Type': 'multipart/form-data',
},
[
// element with property `filename` will be transformed into `file` in form data
{
name: 'files',
filename: payload.name,
data: rnfetchfile.replace('file://file:///', 'file://'),
},
],
);
const res = await RNFetchBlob.fetch(
'POST',
'https://******.***.**/******/***/upload_*******_file',
{
...this.config,
'Content-Type': 'multipart/form-data',
},
[
// element with property `filename` will be transformed into `file` in form data
{
name: 'files',
filename: payload.name,
data: rnfetchfile.replace('file://file:///', 'file://'),
},
],
);
const response = JSON.parse(res.data);
console.log('api upload adpostimage', response);
return response;
} catch (err) {
console.log('postFileUpload', err.response, err);
Toast.show(err.response.data.message, Toast.SHORT);
throw err.response.data;
}控制台消息中的res抛出错误是
POST https://******.***.**/******/***/upload_*******_file {Content-Type: "multipart/form-data", Authorization: "Bearer ******.***.*****"}
[{…}]
0:
name: "files"
filename: "*****.pdf"
data: "RNFetchBlob-file://Users/********/tmp/*****/B****.pdf"}postFileUpload undefined Error: RNFetchBlob.fetchBlobForm failed to create request body
at index.js:313
at MessageQueue.__invokeCallback (MessageQueue.js:483)
at MessageQueue.js:135
at MessageQueue.__guard (MessageQueue.js:384)
at MessageQueue.invokeCallbackAndReturnFlushedQueue (MessageQueue.js:134)
at debuggerWorker.js:69我正在尝试上传一个文件使用rn-fetch-blob和一些疯狂的事情发生了(‘file://file:///’,'file://'),由于file://file///输出似乎不正确,我认为这主要是rnfetchfile.replace的问题,请帮帮我
发布于 2020-05-01 21:05:34
正如here所说,只需使用decodeURIComponent(uri)即可
这是我的代码:
const realPath = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;
const data = [
{
name: 'file',
filename,
type,
data: RNFetchBlob.wrap(decodeURIComponent(realPath)),
},
{name: 'bla', data: 'bla'}
]发布于 2020-02-23 17:14:25
尝试将file://file://替换为“”空字符串..
rnfetchfile.replace('file://file:///', '') - @Abhishek Ghosh评论说,这是一个需要技巧,它可以工作,但文件在uri中将不可用。您上传的文件将无法打开
我试着去做
data: decodeURIComponent(rnfetchfile.replace('file://file:///', 'file:///')希望这能帮上忙
https://stackoverflow.com/questions/60186820
复制相似问题