iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

ArasPLM開發分享系列 第 14

[Day14]MVC檔案下載

  • 分享至 

  • xImage
  •  

昨天介紹了檔案上傳,延續昨天,今天會介紹如何在MVC中下載已經上傳完成的檔案,這邊都是以Excel檔案(.xls/.xlsx)來示範介紹

Controller

  1. 首先在Controller中新增一個具有HttpPost的Action,判斷式的部分在上次建立的上傳Action中建立一個bool旗標,用來判斷是否上傳成功才能執行下載的動作,file_paths的部分為檔案的完整路徑,為了能夠跨Action接收變數值,這些值都將儲存在全域的static變數當中

  2. 上傳的Action

  3. 全域static變數

[HttpPost]
public ActionResult Downloads()
{
    try
    {
        //判斷是否有上傳成功
        if (log_import_download_flag)
        {
            FileInfo fl = new FileInfo(file_paths);
            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = fl.Name,
                Inline = false,
            };
            Response.AppendHeader("Content-Disposition", cd.ToString());
            Response.BufferOutput = false;
            var readStream = new FileStream(fl.FullName, FileMode.Open, FileAccess.Read);
            string contentType = MimeMapping.GetMimeMapping(fl.FullName);
            return File(readStream, contentType);
        }
        else
        {
            Response.Write("<script language=javascript>alert('請先匯入檔案');</" +  "script>");
            return View("ExcelImport");
        }
    }
    catch(Exception ex)
    {
        Response.Write("<script language=javascript>alert('請先匯入檔案');</" + "script>");
        return View("ExcelImport");
    }
}

View

  1. 前端View的部分就是建立一個簡單的Form表單POST到後端Controller接收並執行
@using (Html.BeginForm("Downloads", "Excel", FormMethod.Post, new { enctype ="multipart/form-data"}))
{
    <div class="download_button">
        <button class="btn btn-primary" id="download_button">下載檔案</button>
    </div>
}
  1. 最後再進到網頁中,在檔案上傳成功後點擊下載檔案的按鈕,完成後就會出檔案下載的彈跳視窗,儲存後就能成功將檔案下載至本地端了


上一篇
[Day13]MVC檔案上傳
下一篇
[Day15]MVC利用ColseXML讀取/寫入Excel內的資料
系列文
ArasPLM開發分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言