it-swarm.com.de

Reagiere nativ: Wie bekomme ich Dateigröße, MIME-Typ und Erweiterung?

Ich kenne Native-Fs-reagieren und Native-Fetch-Blob-reagieren , aber mir fehlen einfache Hilfsfunktionen wie getFileInfo(file).

Gewünschter Pseudocode:

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

Was ist der richtige Weg, um die Dateigröße, den MIME-Typ und die Erweiterung zu ermitteln?

Danke im Voraus!

8
Mr. B.

Um Dateigröße mithilfe von React-native-fetch-blob zu bekommen, habe ich den folgenden Code verwendet

Dafür müssen Sie base-64 installieren.

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

Erläuterung:

  1. Der obige Code dekodiert die base64-Daten in eine Zeichenfolge wie atob ().
  2. Nächste Suche nach Länge der Zeichenkette 
  3. Von diesem Wert muss ich die Dateigröße berechnen.

Wenn die Datei zu groß ist, verwenden Sie RNFetchBlob.fs.readStream - Methode anstelle von RNFetchBlob.fs.readFile

Ich bekomme Bytes Berechnung von SO Größe konvertieren

Der Code ist möglicherweise zu lang, um die Dateigröße zu berechnen. Wenn jemand den einfachsten Weg gefunden hat, leite mich

1
Asha

Mit reag-native-fetch-blob können Sie die Dateigröße mit dem folgenden Code ermitteln:

RNFetchBlob.fs.stat(PATH_OF_THE_TARGET)
.then((stats) => {})
.catch((err) => {})

Die Antwort stats enthält folgende Informationen:

{
     // 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
}

Quelle: https://github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API#user-content-statpathstringpromisernfetchblobstat

5
mfekim

Im react-native-fs Sie können die stat -Methode verwenden (um die Dateigröße zu ermitteln)

import { stat } from 'react-native-fs';

...

const statResult = await stat('path/to/my/file.txt');
console.log('file size: ' + statResult.size);
3
Peter Theill

Sie können Daten über den Blob mit React-Native-Fetch-Blob abrufen und React-Native-Mime-Typen verwenden, um die Erweiterung zu erhalten

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

Dateigröße: Diese Antwort passt am besten zum neuen CRNA-Client. Verwenden Sie File System von der Expo. 

import {FileSystem} from expo 

getFileSize = async fileUri => {
   let fileInfo = await FileSystem.getInfoAsync(fileUri);
   return fileInfo.size;
 };
0
theedrifter