2016-12-29 25 views
6

私はreact-native-fsreact-native-fetch-blobを知っていますが、私はgetFileInfo(file)のような簡単なヘルパー関数がありません。React native:ファイルサイズ、MIMEタイプ、拡張子を取得する方法は?

理想の擬似コード:

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タイプと拡張子を取得するための適切な方法は何ですか?

ありがとうございます!

+0

同じ質問がありましたら、解決策を見つけましたか? – dccarmo

+0

@dccarmo残念ながらまだありません。 –

+0

@ dccarmo新しい答えをチェックしてください。多分あなたのために働くかもしれません。 –

答えて

2

を取得するために反応し、ネイティブMIMEタイプを使用することができますフェッチ・ブロブは、私はuがインストールする必要があり、そのために次のコード

を使用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 convert size

からバイト計算を取得していますファイルサイズを計算する。もし誰かが一番簡単な方法を見つけたら、

1

あなたが反応するネイティブ・フェッチ・ブロブをブロブに関するデータを取得し、反応させ、ネイティブ・使用ファイルサイズを得るために拡張

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

誰かが内線番号を偽装するとどうなりますか?適切な方法がありますか? – vzhen

+1

@vzhenこれはサーバー側で行う必要があります – GouxLord

関連する問題