У меня проблема с вызовом API для моего метода загрузки.Скачивание файла с помощью API не работает
Вот код JS я использую, он используется с нокаута:
self.downloadFile = function(file) {
// Ajax Call Get All Leave Records
$.ajax({
type: "POST",
url: "/api/v1/CompanyFilesApi/DownloadFile",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: ko.toJSON(file),
success: function (data) {
console.log("Here is your file");
},
error: function (error) {
alert(error.status + " <--and--> " + error.statusText);
}
});
// Ends Here
};
А вот мой API решение:
public HttpResponseMessage DownloadFile(FileModel file)
{
var path = file.FilePath;
var result = Request.CreateResponse(HttpStatusCode.OK, file.FileName);
var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
Параметр Файл содержит путь и имя файла.
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Ответ всегда в порядке, но он переходит в ветвь ошибки, и файл не открывается. Файлы - это PDF, Excel, Word.
Ваш api возвращает поток октетов, но ваш вызов ajax ожидает тип данных: json – phenxd
Хорошо, я вижу вашу точку. Я внес изменения, теперь он не идет на ветвь ошибки, но все же файл не загружен/сохранен. Как я могу это сделать? – Vlad
Что находится в вашем объекте данных? – phenxd