2016-12-27 3 views
4

Я использую react-native-camera для щелчка изображения. Я получаю путь к файлу, например: «file: ///storage/emulated/0/Pictures/IMG_20161228_021132.jpg» в данных с камеры, которую я храню в состоянии. Я могу использовать это как источник для отображения изображения с помощью компонента «Источник изображения = {{uri: this.props.note.imagePath.path}}», и он отображается правильно.Реагировать Собственная обработка файлов - удалить изображение

Теперь я хочу добавить функциональность удаления изображения. Может ли кто-нибудь предложить, как получить доступ к этому изображению в телефоне, используя упомянутый выше путь и удалить его с телефона.

Я проверил 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

Существует скобка отсутствует после консоли «FILE DELETED». – Murtuza

+0

Исправлено. Спасибо @Murtuza – acharlop

+0

Я получаю FILE DELETED, но файл по-прежнему остается в Галерее без конкурса изображений – CodeBy

Смежные вопросы