私は私が使用dataURLでそれを使用するためには、サーバーからBase64でエンコードされたファイルを取得したい:xhr.overrideMimeTypeを使用しますが、まずサーバーの応答を取得しますか?
xhr.overrideMimeType("text/plain; charset=x-user-defined");
だから私は、未処理のデータが上Base64エンコードを実行するために得ます。
がvar xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
var mimetype = xhr.getResponseHeader('content-type');
xhr.overrideMimeType("text/plain; charset=x-user-defined");
xhr.send(null);
返されたコンテンツタイプが常にある:私は、次のような何かをしようとすると、 var dataUrl = 'data:'+mimetype+';base64,'+b64;
:
しかし、私はまた、MIMEタイプを取得したいが、もともと私のdataURLを宣言するために、サーバから返されましたヌル
完全なソース:
function getFileDataUrl(link,mimetype)
{
var url = location.origin+link;
var getBinary = function (url)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
if(mimetype == null)
{
mimetype = xhr.getResponseHeader('content-type');
console.log('mimetype='+mimetype);
}
xhr.overrideMimeType("text/plain; charset=x-user-defined");
xhr.send(null);
return xhr.responseText;
};
var bin = getBinary(url);
var b64 = base64Encode(bin);
var dataUrl = 'data:'+mimetype+';base64,'+b64;
return dataUrl;
}
var dataUrl = getFileDataUrl(link,null);
何らかの理由で同期のXMLHttpRequestを使用したとき、私はresponseTypeを設定することはできません。 WokerとFileReaderSync()の使用例がありますか? – subject42
@ subject42どうして 'XMLHttpRequest'を同期して使う必要がありますか? – guest271314
さらに実行が結果に依存するため、同期を使用する必要がありました。また、ファイルの読み込み処理中にユーザーのやりとりを避ける必要がありました。 – subject42