JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5ファイルAPIのreadAsBinaryStringでファイルサイズが大きく・内容が異なる問題の原因と対処法

HTML5のFile APIを使ってreadAsBinaryStringでファイルを読み込むと、ディスク上の実際のファイルよりもサイズが大きくなったり、内容が変わってしまうことがあります。

発生する原因

この問題は、ファイルをバイナリ文字列として読み込み、そのデータをもとにmultipart/form-dataリクエストを手動で組み立てている場合によく発生します。バイナリ文字列として扱う過程でエンコードの変換が起こり、元のバイナリデータが正確に保持されないためです。

解決策

このような場合は、xhr.send(File)を使ってFileオブジェクトを直接送信する方法を試してください。アップロードの進捗状況は、すべてのリスト項目が作成された後に発火するxhrのprogressイベントを利用して把握できます。

実装例

以下は、FormDataとXMLHttpRequestを組み合わせたアップロード関数の例です。

function display(url, files) {
    var myForm = new FormData();
    for (var j = 0, file; file = files[j]; ++j) {
        myForm.append(file.name, file);
    }
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.onload = function(e) { ... };
    xhr.send(myForm);
}

このようにFormDataにFileオブジェクトをそのまま追加し、xhr.send()に渡すことで、ブラウザが適切にmultipart/form-dataを構築してくれるため、バイナリデータの破損やサイズの不一致を防ぐことができます。

  1. Windows 10/8/7/XPでディスク容量を分析して空き容量を増やす方法

    パソコンの動作を改善したいなら、まずハードウェアではなくディスクの空き容量に注目してみましょう。実は、ディスク容量の不足はパソコンの動作を大幅に遅くする原因になります。気づかないうちにストレージがいっぱいになり、「十分なディスク領域がありません」というポップアップが表示されて初めて異変に気づくケースも少なくありません。 このような問題に直面している場合は、Disk Analyzer Proの活用がおすすめです。Windowsのディスク使用状況全体をスキャン・分析し、空き容量を確保するための操作をサポートしてくれるユーティリティアプリです。 Windowsのディスク容量を分析できる「Disk

  2. PCのファイルとフォルダを整理してストレージ不足を解消する方法

    ハードディスクの中身をきちんと確認したことがないという方は、実はとても多いのではないでしょうか。そして、ストレージがいっぱいになったら「新しいハードディスクを買えばいい」と考えてしまいがちです。しかし、新しいハードディスクを購入しても、それは一時的な対処にすぎません。数ヶ月後にはまた同じ問題に直面し、さらに次のハードディスクが必要になってしまうからです。 この問題に対する唯一の根本的な解決策は、ファイルを整理し、ハードディスクの中身を把握することです。本記事では、「Disk Analyzer Pro」というツールを使って、PC上のファイルやフォルダを整理する方法を詳しくご紹介します。 まず、