1

サーバーに送信する準備ができるまで画像をローカルに保存しているWebアプリがあります。画像をローカルに保存するときは、base64でエンコードします。次に、これらの画像を使用してマルチパートファイルのアップロードを行います。

したがって、画像をバイナリ形式に戻す必要があります。FileReaderを使用して、次のように変換してみました。

var fr = new FileReader();
fr.onloadend = function(binaryImage){
    debugger;
    binaryImage;
};
var base64Str = item.base64Image.substr(item.base64Image.indexOf("base64") + 7);
//var base64Str = item.base64Image;
fr.readAsBinaryString(base64Str);

ただし、onloadendイベントが発生することはなく、エラーも発生しません。画像を取得したら、アップロードに問題はありません。何か案は?

ありがとう!

4

1 に答える 1

1

FileReader には詳しくありませんが、readAsBinaryString は Blob または File オブジェクトを想定していると思います。文字列を渡すと、私の側でエラーが発生します。これを試して:

var fr = new FileReader();
fr.onloadend = function(binaryImage){
    debugger;
    binaryImage;
};
var blob = new Blob([item.base64Image.
                          substr(item.base64Image.indexOf("base64") + 7)]);
fr.readAsBinaryString(blob);

私はこれがあなたに欲しがるとは思わない。Base64 をエンコード/デコードする方法については、この記事を参照してください: Javascript を使用して Base64 にエンコードするにはどうすればよいですか?

Web Kit ブラウザには btoa() と atob() を使用できるようです。

于 2013-02-15T02:02:44.023 に答える