簡體   English   中英

如何下載我的文件夾中的文件 c# ASP.NET Web API?

[英]How can I download file in my folder c# ASP.NET Web API?

我的C:\fileName中需要一個下載文件。

我被發送到 fileName 此類,但它不起作用? 我的錯誤在哪里?

這是我的代碼:

// POST: api/Calendar/DownloadFile
[HttpPost]
public HttpResponseMessage DownloadFile(DownloadInput fileName)
{
        var result = new HttpResponseMessage(HttpStatusCode.OK);
        var filePath = HttpContext.Current.Server.MapPath(@"C:\" + fileName);
        var fileBytes = File.ReadAllBytes(filePath);
        var fileMemStream = new MemoryStream(fileBytes);
        result.Content = new StreamContent(fileMemStream);
        var headers = result.Content.Headers;
        headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        headers.ContentDisposition.FileName = fileName;
        headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        headers.ContentLength = fileMemStream.Length;

        return result;
}

這是我的錯誤:

異常類型:“System.NotImplementedException”
消息:“發生錯誤。”

以下是 MVC 的:

  public ActionResult DownloadFile(string fileWithFullPath)
    {                
        var fileBytes = System.IO.File.ReadAllBytes(fileWithFullPath);    
        return File(fileBytes, MediaTypeNames.Application.Octet, fileName);
    }

以下是API:

public ActionResult DownloadFile()
{
            var result = new HttpResponseMessage(HttpStatusCode.OK);
            var stream = new FileStream(fullyQualifiedFileName, FileMode.Open);
            result.Content = new StreamContent(stream);
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
            result.Content.Headers.ContentLength = stream.Length;

            string input = $"filename=test.pdf";
            ContentDispositionHeaderValue contentDisposition = null;
            if (ContentDispositionHeaderValue.TryParse(input, out contentDisposition))
            {
                result.Content.Headers.ContentDisposition = contentDisposition;
            }

            return this.ResponseMessage(result);
}

根據您在此處顯示的內容,參數 DosyaAdi 是一個字符串,不清楚 DownloadInput 是什么。 我建議將輸入參數更改為字符串,並將方法更改為 HttpGet。 第二個建議是為了慣例,可能不是問題。

// GET: api/Calendar/DownloadFile
[HttpGet]
public HttpResponseMessage DownloadFile(string DosyaAdi)...

祝你好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM