リファレンス: FileReader.readAsDataURL
次の例を検討してください。
function previewFile(file) {
var reader = new FileReader();
reader.onloadend = function () {
console.log(reader.result);
}
reader.readAsDataURL(file);
}
状態:
instanceOfFileReader.readAsDataURL(blob);
blob:読み取り元のBlobまたはFile。
'file:///C:/path-to/root.png'
のようなローカルファイルURLをreadAsDataURL()
に渡す方法
FileReader()
はFirefoxアドオンで利用できますか?
この情報は現在のところ古くなっていますが、削除することはできません。
コードがクロム特権のときにパスを指定するだけで File
インスタンス を作成できます。
new File("/path/to/file");
File
はBlob
のサブクラスであるため、すべてのFile
インスタンスも有効なBlob
sです。これには ファイルURLではなくプラットフォームパス が必要であることに注意してください。
はい、アドオンではFileReader
を使用できます。
File
とFileReader
は、すべてのwindow
で使用できます。非ウィンドウスコープ(bootstrap.js
やコードモジュールなど)で使用する場合は、nsIDOMFile
/nsIDOMFileReader
を使用できます。
FileReader.readAsDataURL()のURLをBlobに変換するには、次のようにします。
var request = new XMLHttpRequest();
request.open('GET', MY_URL, true);
request.responseType = 'blob';
request.onload = function() {
var reader = new FileReader();
reader.readAsDataURL(request.response);
reader.onload = function(e){
console.log('DataURL:', e.target.result);
};
};
request.send();
これを試してくださいicoへの変換をいじっていたときに@nmaierからこれを学びました。
function previewFile(file) {
var reader = new FileReader();
reader.onloadend = function () {
console.log(reader.result); //this is an ArrayBuffer
}
reader.readAsArrayBuffer(file);
}
readAsDataURL
をreadAsArrayBuffer
に変更したことに注目してください。
@nmaierが私に与えた例は次のとおりです。 https://stackoverflow.com/a/24253997/1828637
それはフィドルを持っています
これを取り出してファイルを作成する場合は、onloadend
でfile-output-streamを使用すると思います
Felix Turnerの応答を拡張して、fetch
APIでこのアプローチをどのように使用するかを示します。
async function createFile(){
let response = await fetch('http://127.0.0.1:8080/test.jpg');
let data = await response.blob();
let metadata = {
type: 'image/jpeg'
};
let file = new File([data], "test.jpg", metadata);
// ... do something with the file or return it
}
createFile();