2016-12-27 2 views
4

Ich verwende react-native-camera für das Klicken auf Bilder. Ich bekomme einen Dateipfad wie: "file: ///storage/emulate/0/Pictures/IMG_20161228_021132.jpg" in den Daten von der Kamera, die ich in dem Zustand abspeichere. Ich kann dies als Quelle für die Anzeige des Bildes mit der Image-Komponente "Image source = {{uri: this.props.note.imagePath.path}}" verwenden und es wird korrekt angezeigt.Native Dateiverwaltung reagieren - Bild löschen

Jetzt möchte ich löschen Bildfunktionalität hinzufügen. Kann jemand vorschlagen, wie man mit dem oben genannten Pfad auf dieses Bild im Telefon zugreift und es vom Telefon löscht?

Ich überprüfte die react-native-filesystem, aber wenn ich die Funktion checkIfFileExists in diesem Pfad übergeben habe, habe ich, dass die Datei nicht existiert. Nicht sicher, was falsch läuft.

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

Antwort

3

So war ich in der Lage, es zu tun mit react-native-fs

Der Weg erklärt werden muss, wie folgt:

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

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

Dann ist diese Funktion das Bild gegeben löscht das Bild Name.

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

Ich habe auch react-native-fs verwendet. Aber anstatt den Dateipfad neu erstellt habe ich nur die Datei schon zu mir in meinem Fall gegeben durch 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

Es gibt eine Klammer nach der Konsole ‚Datei gelöscht‘ fehlt. – Murtuza

+0

Behoben. Danke @Murtza – acharlop

+0

Ich erhalte Datei gelöscht, aber Datei bleibt in der Galerie ohne Bildwettbewerb – CodeBy