2017-11-19 3 views
0

iOSでiPhone 6 Simulatorを使用してrn-fetch-blob 0.10.8とRN 0.49を使用しています。ファイルを終了するために「ファイルがありません」ファイルを開くことができませんでした。

私はreact-native-image-resizerモジュールを使用してイメージのサイズを変更してから、react-native-fetch-blobを使用してそのイメージを適切な場所に移動します。私はエラーを取得しています行っているときしかし、:

The file “6492238E-AAAC-4DC6-90F3-AFAB7225DBD5.jpg” couldn’t be opened because there is no such file.

をコピーを行う前に、私はコンソールに送信元と宛先を印刷しています:

"Moving file:///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 => /Users/laurent/Library/Developer/CoreSimulator/Devices/3AF6C788-B6ED-41DD-85F0-32D719DB0DBE/data/Containers/Data/Application/A401D341-9C60-4AA3-8D8F-69207A8C9454/Documents/testing.jpg"

私はそのパスを確認することができ//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 

答えて

2

問題は、このパスは、あなたが最初に必要とするアプリケーションtempフォルダのように、有効な場所に保存し、JavaScriptから到達できないということで、 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は素晴らしいソリューションです。

+1

はい、私は 'RNFetchBlob.fs.cp(source、target)'を 'RNFS.copyFile(source、target)'に置き換えて動作させました。どちらもネイティブモジュールなので、なぜ1つの仕事ともう1つは関係ないのですか?または、RNFetchBlobのバグですか?いずれにせよ、正しい方向に私を向けることに感謝します。 –