Ich habe einen HTTP POST REST-Endpunkt, der ein Bild konsumiert und ein HTML-Dokument mit Pixeldaten aus dem Bild zurückgibt. Die HTTP-Antwort enthält die Kopfzeile Content-Disposition: Anhang; Dateiname = Pixels.html, so dass der Browser zum Herunterladen aufgefordert werden würde.Herunterladbare Datenverbindung für HTTP POST mit JavaScript
Ich möchte ein HTML haben/JavaScript (nicht jQuery) Anwendung, die
- mir ein Bild durchsuchen können und holen (zB
<input id="fid" name="fid" type="file" />
- auf Klicken auf einen Link um die Bilddaten auf die Post .? Endpunkt und lassen Sie mich auf die Festplatte den HTML-Inhalt herunterladen (zB
<p onclick="javascript: getPixels()">Get Pixels</p>
)
Wie gehe ich über das tun dies habe ich versucht, den folgenden Code:
function getPixels() {
var input = document.getElementById("fid");
if (input.files && input.files[0]) {
if (typeof (FileReader) != "undefined") {
var reader = new FileReader();
reader.onload = function (e) {
var imgData = e.target.result;
var postUrl = "./GetPixelsService.svc/image";
var xhr = new XMLHttpRequest();
xhr.open("POST", postUrl);
xhr.setRequestHeader("Content-Type", "image/png");
//xhr.onreadystatechange = function() {
// if (xhr.readyState === 4) {
// var res_display = document.getElementById("results");
// res_display.srcdoc = xhr.responseText;
// }
//}
xhr.send(imgData);
};
reader.readAsArrayBuffer(input.files[0]);
}
}
}
Der folgende HTML-Klappentext ruft die obige Funktion auf.
<p>
Upload the image here:
</p>
<input id="fid" name="fid" type="file" />
<!--<button type="submit" onclick="javascript: getPixels()">Get Pixels</button>-->
<p onclick="javascript: getPixels()">Get Pixels</p>
<p />
<hr />
<p>
<img id="img2check" src="" alt="" />
</p>
<p />
<iframe id="results" style="width: 100%; border: 0; height: 400px;" src="javascript:;">
Your browser does not support iframes.
</iframe>
Ich bin in der Lage, die Antwort zu holen und es in einem iframe angezeigt werden, aber nicht in der Lage, den Browser zu erhalten, den Inhalt herunterzuladen.
Schätzen Sie Ihre Hilfe. Ich habe mir die relevanten Fragen zu StackOverflow angeschaut, aber bisher hat keiner geholfen.
Vielen Dank im Voraus.
Vielen Dank. Ich habe versucht, eine URL über Blob zu erstellen, aber das hat nicht funktioniert: Der Inhalt der URL wurde stattdessen auf die Seite verschoben. Ich werde noch einen Blick darauf werfen. – pengu1n
Die serverseitige ist REST, also erwartet sie nur die Image-Binärdatei. Aus diesem Grund habe ich den Formular-Ansatz nicht durchlaufen (der das Bild-Binary kodieren würde). Gibt es eine Möglichkeit, nur die Bilddatei per Formular zu senden? – pengu1n
Danke. Eine Kombination von (2) und (4) macht die Magie. Ich werde die ganze Lösung als eine Antwort zum Nutzen anderer posten. Danke noch einmal ... – pengu1n