ich eine Base64 codierte Datei von dem Server, um es in einem DataURL bekommen zu verwenden, so verwende ich:Verwenden Sie xhr.overrideMimeType, aber zuerst die Serverantwort?
xhr.overrideMimeType("text/plain; charset=x-user-defined");
So bekomme ich die nicht verarbeiteten Daten, die base64 auszuführen auf codieren.
Aber ich mag auch den MIME-Typen ursprünglich vom Server zurückgegeben bekommen, um meine DataURL zu erklären: var dataUrl = 'data:'+mimetype+';base64,'+b64;
, wenn ich so etwas wie die folgenden versuchen:
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);
der Content-Type zurückgegeben wird, ist immer null
Voll Quelle:
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);
i response nicht einstellen, wenn XMLHttpRequest synchron aus irgendeinem Grund verwenden. Haben Sie ein Beispiel für die Verwendung von Woker und FileReaderSync()? – subject42
@ subject42 Warum müssen Sie 'XMLHttpRequest' synchron benutzen? – guest271314
Ich musste es synchron verwenden, da die weitere Ausführung von seinen Ergebnissen abhing, auch weitere Benutzerinteraktion sollte während des Ladevorgangs der Datei vermieden werden. – subject42