Wywołuję ajaxem pobranie pliku z backendu w wyniku czego otrzymuję byte[], a przynajmniej tak mi się wydaje.
Następnie próbuję zapisać tę tablicę jako plik .pdf i tu pojawia się problem, ponieważ do pliku zapisywany jest zawartość tablicy a nie tworzy się poprawny pdf.
Moje pytanie: jak w js spowodować, żeby utworzył się i ściągnął poprawny plik?
ajax + js:
$("#fileGet").click(function () {
var _url = '/Home/Get';
var documentId = $("#docId").val();
$.ajax({
url: _url,
crossDomain: true,
type: "POST",
async: true,
contentType: "application/json; charset=utf-8",
data: { documentId: documentId },
success: function (result) {
**saveByteArray("sample.pdf", result.documentBody)**
},
error: function (xhr, status, error) {
alert('Nie udało się pobrać pliku.');
}
});
})
function saveByteArray(fileName, byte) {
var blob = new Blob([byte], { type: "application/pdf" });
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
};
Zarówno result.documentBody jak i zawartość ściągniętego w ten sposób pliku to ciąg znaków zaczynający się od : "JVBERi0xLjMNJeLjz9MNCjI4IDAgb2JqDTw8IA0vTGluZWFyaXplZCAxIA0vTyAzMiANL0ggW..."
Przed przesłaniem do frontendu odpowiedzi sprawdziłem jeszcze w backendzie i plik tworzy się poprawnie przy pomocy :
File.WriteAllBytes(@"C:\0\Foo.pdf", result.documentBody);