ASP.NET Web APIは簡単なファイルダウンロードとアップロードを実現


ASP.NET Web APIは簡単なファイルダウンロードとアップロードを実現する.まずASPを作成する.NET Web APIプロジェクトは、プロジェクトの下にFileRootディレクトリを作成し、その下にReportTemplateを作成します.xlsxファイルは、次の例の使用に使用します.
1、ファイルのダウンロード
例:レポートテンプレートファイルのダウンロード機能を実装します.
1.1バックエンドコード
/// 
///     
/// 
[HttpGet]
public HttpResponseMessage DownloadFile()
{
    string fileName = "    .xlsx";
    string filePath = HttpContext.Current.Server.MapPath("~/") + "FileRoot\\" + "ReportTemplate.xlsx";
    FileStream stream = new FileStream(filePath, FileMode.Open);
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StreamContent(stream);
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = HttpUtility.UrlEncode(fileName)
    };
    response.Headers.Add("Access-Control-Expose-Headers", "FileName");
    response.Headers.Add("FileName", HttpUtility.UrlEncode(fileName));
    return response;
}

1.2フロントエンドコード
テンプレートのダウンロード

2、ファイルのアップロード
例:レポート・ファイルのアップロード機能を実装します.
2.1バックエンドコード
/// 
///     
/// 
[HttpPost]
public HttpResponseMessage UploadFile()
{
    try
    {
        //      
        HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
        HttpRequestBase request = context.Request;      //    request  
        string monthly = request.Form["Monthly"];       //      :  
        string reportName = request.Form["ReportName"]; //      :    

        //    
        string fileName = String.Format("{0}_{1}.xlsx", monthly, reportName);
        string filePath = HttpContext.Current.Server.MapPath("~/") + "FileRoot\\" + fileName;
        request.Files[0].SaveAs(filePath);

        //    
        var result = new HttpResponseMessage
        {
            Content = new StringContent("    ", Encoding.GetEncoding("UTF-8"), "application/json")
        };

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    };
}

2.2フロントエンドコード