Я пытаюсь загрузить файл в asp. net web api.
Я загружаю просто txt.
, если я пытаюсь .xsl .pdf .docx ... это файлы загружаются, но файлы повреждены и не работают ..
но файл .txt открыт и работает
это мой код API:
public HttpResponseMessage GetFile(DownloadInput input)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
var fileNm = input.fiName;
string filePath = (@"C:\Uploads\" + input.folderName + @"\" + fileNm);
if (!File.Exists(filePath))
{
response.StatusCode = HttpStatusCode.NotFound;
response.ReasonPhrase = string.Format("File not found: {0} .", fileNm);
throw new HttpResponseException(response);
}
byte[] bytes = File.ReadAllBytes(filePath);
response.Content = new ByteArrayContent(bytes);
response.Content.Headers.ContentLength = bytes.LongLength;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileNm;
response.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping(filePath));
return response;
}
Это мой ajax код:
function DownloadFile(fiName,foName) {
var UserData = {
"folderName": "" + foName+ "",
"fiName": "" + fiName + "",
};
var userDataJson = JSON.stringify(UserData);
$.ajax({
url: "http://localhost:9000/api/Calendar/GetFile",
type: "POST",
contentType: "application/json",
data: userDataJson,
success: function (response, xhr, request) {
let contentType = request.getResponseHeader('Content-Type');
let blob = new Blob([response], {
type: contentType
});
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = ad;
link.click();
},
error: function (err) {
console.log(JSON.stringify(err));
}
});
Спасибо,