发布于 2020-09-21 09:25:44
如果您尝试将文件上载到服务器,react-native-image-picker & react-native-image-crop-picker将不能在iOS模拟器上工作。它将抛出:
请求缺少请求令牌:请求:
{ URL: 0x60000253e5a0>错误。
它在android和ios的真实设备上都运行得很好。只需使用如下所示的文件名。
ImagePicker.openPicker({
width: 300,
height: 400,
cropping: true,
compressImageMaxHeight: 300,
compressImageMaxWidth: 400,
compressImageQuality: 0.5,
mediaType: 'photo',
}).then(image => {
let filename = image.path.split('/').pop();
let formData = new FormData();
formData.append('file', {
name: Platform.OS === 'android' ? filename : image.filename,
type: image.mime,
uri: image.path,
});
}发布于 2020-09-29 09:54:41
这是一个内部错误。试试看。
转到node_modules/react-native/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);
};
}https://stackoverflow.com/questions/63976845
复制相似问题