我在iOS 6和iPhone 6模拟器上使用rn-fetch-blob 0.10.8和RN 0.49。
我使用react-native-image-resizer模块调整图像大小,然后使用react-native-fetch-blob将该图像移动到正确的位置。但是,这样做的时候我得到了错误:
无法打开文件“6492238E-AAAC-4DC6-90F3-AFAB7225DBD5.jpg”,因为没有此类文件。
在复制之前,我将源和目标打印到控制台:
&#34;移动文件:/// Users / laurent / Library / Developer / CoreSimulator / Devices / 3AF6C788-B6ED-41DD-85F0-32D719DB0DBE / data / Containers / Data / Application / A401D341-9C60-4AA3-8D8F -69207A8C9454 / Library / Caches / 6492238E-AAAC-4DC6-90F3-AFAB7225DBD5.jpg =&gt; /Users/laurent/Library/Developer/CoreSimulator/Devices/3AF6C788-B6ED-41DD-85F0-32D719DB0DBE/data/Containers/Data/Application/A401D341-9C60-4AA3-8D8F-69207A8C9454/Documents/testing.jpg" < / p>
我可以验证路径//Users/laurent/Library/Developer/CoreSimulator/Devices/3AF6C788-B6ED-41DD-85F0-32D719DB0DBE/data/Containers/Data/Application/A401D341-9C60-4AA3-8D8F-69207A8C9454/Library/Caches/6492238E-AAAC-4DC6-90F3-AFAB7225DBD5.jpg
是否存在,因为我可以在Finder中打开它。但是由于某种原因,rn-fetch-blob找不到它。
知道可能是什么问题吗?
有关以下代码的信息:
const resizedImage = await ImageResizer.createResizedImage(localFilePath, dimensions.width, dimensions.height, format, 85);
const resizedImagePath = resizedImage.uri;
console.info('Moving ' + resizedImagePath + ' => ' + targetPath);
await RNFetchBlob.fs.cp(resizedImagePath, targetPath); // Throws error
答案 0 :(得分:2)
问题是无法从JavaScript访问此路径,您需要先将其保存到有效位置(如应用程序temp
文件夹),然后传递temp
文件夹URL。
这是您在iOS上保存到temp
文件夹的方式:
+(NSURL*)saveToTmpFolder:(NSData*)data {
NSString *temporaryFileName = [NSProcessInfo processInfo].globallyUniqueString;
NSString *temporaryFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[temporaryFileName stringByAppendingPathExtension:@"jpg"]];
NSURL *temporaryFileURL = [NSURL fileURLWithPath:temporaryFilePath];
NSError *error = nil;
[data writeToURL:temporaryFileURL options:NSDataWritingAtomic error:&error];
if ( error ) {
//NSLog( @"Error occured while writing image data to a temporary file: %@", error );
}
else {
//NSLog(@"Image Saved - YOU ROCK!");
}
return temporaryFileURL;
}
或者,如果您使用JavaScript API,react-native-fs是一个很好的解决方案。