2016-12-27 13 views
4

私は画像をクリックするためにreact-native-cameraを使用しています。状態に保存しているカメラのデータに「file:///storage/emulated/0/Pictures/IMG_20161228_021132.jpg」のようなファイルパスがあります。私はイメージコンポーネント "Image source = {{uri:this.props.note.imagePath.path}}"を使用してイメージを表示するためのソースとしてこれを使用することができ、正しく表示されています。Reactネイティブファイル処理 - 画像を削除

削除イメージ機能を追加します。誰かが上記のパスを使って電話でこの画像にアクセスして電話から削除する方法を提案できますか?

私はreact-native-filesystemを確認しましたが、このパスでcheckIfFileExists関数を使用してファイルが存在しないことがわかりました。何がうまくいかないのか分かりません。

async checkIfFileExists(path) { 

const fileExists = await FileSystem.fileExists(path); 
//const directoryExists = await FileSystem.directoryExists('my-directory/my-file.txt'); 
console.log(`file exists: ${fileExists}`); 
//console.log(`directory exists: ${directoryExists}`); 
} 


deleteNoteImage (note) { 

console.log(note.imagePath.path); 

//check if file exists 
this.checkIfFileExists(note.imagePath.path); 
//console.log(); 

note.imagePath = null; 
this.updateNote(note); 
} 

remote debugging snapshot

答えて

3

だから私は、パスは次のように宣言する必要がありreact-native-fs

を使用してそれを行うことができました:

var RNFS = require('react-native-fs'); 

const dirPicutures = `${RNFS.ExternalStorageDirectoryPath}/Pictures`; 

次に、この関数は、画像与えられた画像を削除します名。

deleteImageFile(filename) { 

    const filepath = `${dirPicuturesTest}/${filename}`; 

    RNFS.exists(filepath) 
    .then((result) => { 
     console.log("file exists: ", result); 

     if(result){ 
      return RNFS.unlink(filepath) 
      .then(() => { 
       console.log('FILE DELETED'); 
      }) 
      // `unlink` will throw an error, if the item to unlink does not exist 
      .catch((err) => { 
       console.log(err.message); 
      }); 
     } 

     }) 
     .catch((err) => { 
     console.log(err.message); 
     }); 
    } 
1

react-native-fsも使用しました。しかし、その代わりに、ファイルのパスを再作成の私は「削除されたファイル」のコンソール後に不足しているブラケットがありreact-native-camera

const file = 'file:///storage/emulated/0/Pictures/IMG_20161228_021132.jpg' 
const filePath = file.split('///').pop() // removes leading file:/// 

RNFS.exists(filePath) 
    .then((res) => { 
    if (res) { 
     RNFS.unlink(filePath) 
     .then(() => console.log('FILE DELETED')) 
    } 
    }) 
+0

により、既に私の場合、私に与えられたファイルを使用していました。 – Murtuza

+0

固定。ありがとう@Murtuza – acharlop

+0

私はFILE DELETEDを受け取っていますが、まだ画像コンテストのないギャラリーにファイルが残っています – CodeBy