[英]React native: how to get file size, mime type and extension?
我知道react-native-fs和react-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类型和扩展名的正确方法是什么?
提前致谢!
使用react-native-fetch-blob ,您可以使用以下代码获取文件大小:
RNFetchBlob.fs.stat(PATH_OF_THE_TARGET)
.then((stats) => {})
.catch((err) => {})
响应统计信息包含以下信息:
{
// file name
filename : 'foo.png',
// folder of the file or the folder itself
path : '/path/to/the/file/without/file/name/',
// size, in bytes
size : 4901,
// `file` or `directory`
type : 'file',
// last modified timestamp
lastModified : 141323298
}
来源: https : //github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API#user-content-statpathstringpromisernfetchblobstat
在react-native-fs
您可以使用stat
方法(获取文件大小)
import { stat } from 'react-native-fs';
...
const statResult = await stat('path/to/my/file.txt');
console.log('file size: ' + statResult.size);
文件大小:此答案最适合新的CRNA客户端。 使用Expo中的文件系统 。
import {FileSystem} from expo
getFileSize = async fileUri => {
let fileInfo = await FileSystem.getInfoAsync(fileUri);
return fileInfo.size;
};
您可以使用react-native-fetch-blob获取有关Blob的数据,并使用react-native-mime-types来获取扩展名
const res = yield RNFetchBlob.config({fileCache: false}).fetch('GET', url, {})
const blob = yield res.blob().then((blob) => {
mimetype.extension(blob.type)
}
)
为了使用react-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");
})
说明:
如果文件太大,请使用RNFetchBlob.fs.readStream方法而不是RNFetchBlob.fs.readFile
我正在从SO转换大小获取字节计算
该代码可能太长,无法计算文件大小。 如果有人找到最简单的方法指导我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.