2016-12-29 9 views
6

react-native-fs ve react-native-fetch-blob'u biliyorum, ancak getFileInfo(file) gibi basit yardımcı işlevleri eksik.Yerelleştirin: dosya boyutu, mime türü ve uzantısı nasıl edinilir?

İstenilen sahte kod:

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); 

dosya boyutu, MIME türü ve uzantısı almak için uygun yolu nedir?

Şimdiden teşekkürler!

+0

Aynı soruya sahipseniz, herhangi bir çözüm buldunuz mu? – dccarmo

+0

@dccarmo Henüz bir bilgi yok. –

+0

@dccarmo Yeni cevabı kontrol edin, belki sizin için çalışır. –

cevap

2

tepki-doğal-kullanılarak dosya boyutu içiyoruz uzantıya almak için tepki yerli-mim-türlerini kullanabilirsiniz getir-damla ı u yüklemeniz gerekir Bunun için aşağıdaki kodu

kullanılan 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"); 
    }) 

Açıklama:

  1. Yukarıdaki kod, base64 verilerini atob() gibi dizgiyle çözer.
  2. Sonraki dize uzunluğunu bulma
  3. Bu değerden dosya boyutunu hesaplamak zorundayım.

dosya kodu olabilir SO convert size

gelen kullanım RNFetchBlob.fs.readStream yöntem yerine RNFetchBlob.fs.readFile

alıyorum bayt Hesaplama çok uzun için çok büyükse dosya boyutunu hesaplar. Eğer herhangi biri en kolay yolu bulduysa bana rehberlik edin

1

Sen tepki yerli getirme-blob ile blob hakkında veri alma ve

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

Birisi uzantıyı taklit ederse ne olur? Uygun bir yolu var mı? – vzhen

+1

@vzhen Bunun sunucu tarafında yapılması gerekiyor – GouxLord