Har*_*nda 15 javascript multipartform-data request ios react-native
从电话簿获取所有联系人并上传到服务器但出现以下错误。
在请求正文中附加图像时 FormData
试过的代码
传递文件 url 联系人缩略图路径
const path = con.thumbnailPath
body.append('image', {
uri: path,
type: 'image/jpeg',
name: 'photo.jpg',
type: 'multipart/form-data'
})
Run Code Online (Sandbox Code Playgroud)
试过的代码
传递没有“file://”的文件 url 联系人缩略图路径
const path = con.thumbnailPath.replace('file://', '')
body.append('image', {
uri: path,
type: 'image/jpeg',
name: 'photo.jpg',
type: 'multipart/form-data'
})
Run Code Online (Sandbox Code Playgroud)
试过的代码
使用检查文件是否存在于路径上 react-native-fs
if (con.thumbnailPath != '') {
let isExist = RNFS.exists(con.thumbnailPath)
if (isExist) {
const path = con.thumbnailPath.replace('file://', '')
console.log("Exist", path)
body.append('image', {
uri: path,
type: 'image/jpeg',
name: 'photo.jpg',
type: 'multipart/form-data'
})
}
}
Run Code Online (Sandbox Code Playgroud)
要求
fetch(url, {
method: 'POST',
headers: {
'Authorization': token,
'token': token
},
body: params
})
.then((res) => res.json())
.then((json) => {
console.log("RESPONSE:- ", json)
if (json.response[0].status == 'false') {
let msg = json.response[0].response_msg
callback(new Error(msg), json.response[0])
}
else {
callback(null, json.response[0])
}
})
.catch((err) => {
console.log(err)
callback(err, null)
})
Run Code Online (Sandbox Code Playgroud)
Col*_*amp 17
问题来自react-native@0.63.2
的内部错误。
一个快速的解决方案是恢复这个提交:https : //github.com/facebook/react-native/commit/31980094107ed37f8de70972dbcc319cc9a26339#diff-9a034658197479288c4d346a0eb4d98c
在手动还原此提交后node_modules
,重新编译应用程序,图像上传将正常工作,没有任何问题。
替换功能,loadImageForURL
在 /Libraries/Image/RCTLocalAssetImageLoader.mm
下列要求:
- (RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
size:(CGSize)size
scale:(CGFloat)scale
resizeMode:(RCTResizeMode)resizeMode
progressHandler:(RCTImageLoaderProgressBlock)progressHandler
partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
completionHandler:(RCTImageLoaderCompletionBlock)completionHandler
{
__block auto cancelled = std::make_shared<std::atomic<bool>>(false);
RCTExecuteOnMainQueue(^{
if (cancelled->load()) {
return;
}
UIImage *image = RCTImageFromLocalAssetURL(imageURL);
if (image) {
if (progressHandler) {
progressHandler(1, 1);
}
completionHandler(nil, image);
} else {
NSString *message = [NSString stringWithFormat:@"Could not find image %@", imageURL];
RCTLogWarn(@"%@", message);
completionHandler(RCTErrorWithMessage(message), nil);
}
});
return ^{
cancelled->store(true);
};
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7014 次 |
最近记录: |