新しい FileReader API を使用して、アップロード前に画像をプレビューしています。これは、DataURL を使用して行われます。ただし、画像が大きい場合、DataURL は巨大になる可能性があります。ユーザーが一度に複数の画像をアップロードする可能性があり、その束をプレビューすると実際にブラウザーが大幅に遅くなり、実際にクロムが数回クラッシュしたため、これは特に問題です。
アップロード前にクライアントで画像をプレビューするために DataURL を使用する代わりに何かありますか?
新しい FileReader API を使用して、アップロード前に画像をプレビューしています。これは、DataURL を使用して行われます。ただし、画像が大きい場合、DataURL は巨大になる可能性があります。ユーザーが一度に複数の画像をアップロードする可能性があり、その束をプレビューすると実際にブラウザーが大幅に遅くなり、実際にクロムが数回クラッシュしたため、これは特に問題です。
アップロード前にクライアントで画像をプレビューするために DataURL を使用する代わりに何かありますか?
クライアントのディスク(JavaScriptを使用してファイルにアクセスできるように別の場所)にデータを保存することもできます。このテーマに関しては、この記事は非常に広範囲にわたっています。
http://www.html5rocks.com/en/tutorials/file/filesystem/
ただし、すべてのブラウザでサポートされているわけではありません。
ストレージスペース(ファイルシステム)を要求し、ファイルを作成してデータを書き込み、最後にURLを取得する必要があります。
window.requestFileSystem(window.PERSISTENT, 5*1024*1024, function(fs) {
fs.root.getFile(filename, {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var arr = new Uint8Array(data.length);
// fill arr with image byte data here
var builder = new BlobBuilder();
builder.append(arr.buffer);
var blob = builder.getBlob();
fileWriter.write(blob);
location.href = fileEntry.toURL(); // navigate to file. The URL does not contain the data but only the path and filename.
});
});
}, function() {});