Почему просто скачать текстовый файл? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь загрузить файл в 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));
            }
        });

Спасибо,

...