Intereting Posts
Пропустить фрагменты между действиями Выпуск подписи Android Release Build «Не удалось прочитать ключ из хранилища ключей» Как обновить значение столбца базы данных базы данных android sqlite до значения null, используя ContentValues? Как добавить к текстовому файлу в android? ImageButton не отображает конкретную Значок значка «Серая коробка» Консоль разработчика Google Play Как определить изменения ориентации, но позволяя андроиду обращаться с ними? Как использовать новый формат ограничений Android для уменьшения иерархии просмотра Не удалось подключиться к службе камеры Google Analytics для отслеживания id отслеживания Android .GoogleAuthException: Неизвестно при выполнении единого входа в систему Google. Android Studio – Горячая клавиша для перехода к объявлению xml – это переход к файлу R Кнопка Google Plus One показывает неправильный счет в приложении для Android (ошибка счетчика) Передать ArrayList из модуля android в ядро ​​в libgdx Книги о дизайне пользовательского интерфейса Android

React native: как получить размер файла, тип mime и расширение?

Я знаю response-native-fs и response-native-fetch-blob , но мне не хватает простых вспомогательных функций, таких как getFileInfo(file) .

Желаемый псевдокод:

 let fileInfo = getFileInfo('path/to/my/file.txt'); console.log('file size: ' + fileInfo.size); console.log('mime type: ' + fileInfo.type); console.log('extension: ' + fileInfo.extension); 

Каков правильный способ получить размер файла, тип mime и расширение?

Заранее спасибо!

Чтобы получить размер файла с помощью response-native-fetch-blob, я использовал следующий код

Для этого вам нужно установить base-64

 var base64 = require('base-64'); RNFetchBlob.fs.readFile(filePath, 'base64') .then((data) => { var decodedData = base64.decode(data); var bytes=decodedData.length; if(bytes < 1024) console.log(bytes + " Bytes"); else if(bytes < 1048576) console.log("KB:"+(bytes / 1024).toFixed(3) + " KB"); else if(bytes < 1073741824) console.log("MB:"+(bytes / 1048576).toFixed(2) + " MB"); else console.log((bytes / 1073741824).toFixed(3) + " GB"); }) 

Объяснение:

  1. Вышеприведенный код декодирует данные base64 в строку, такую ​​как atob ().
  2. Следующая длина поиска строки
  3. Из этого значения я должен вычислить размер файла.

Если файл слишком велик, используйте метод RNFetchBlob.fs.readStream вместо RNFetchBlob.fs.readFile

Я получаю вычисления байтов из SO-преобразования размера

Код может быть слишком длинным для расчета размера файла. Если кто-нибудь найдет самый простой способ,

Вы можете получить данные о блобе с помощью реакции-native-fetch-blob и использовать для активации расширения-native-mime-типы

 const res = yield RNFetchBlob.config({fileCache: false}).fetch('GET', url, {}) const blob = yield res.blob().then((blob) => { mimetype.extension(blob.type) } )