1. 程式人生 > >ASP.NET實現檔案上傳和下載

ASP.NET實現檔案上傳和下載

###### 本文的開發配置 ######

.NET版本:.NET Framework 4.0

開發環境:Microsoft Visual Studio 2013

瀏覽器:IE、Chrome、FireFox等都行

 

1、搭建網站結構

建立一個新的目錄存放網頁檔案,用VS2013在這個目錄裡面建一個網站專案(VS2013怎麼新建網站專案?

新建兩個目錄UploadFile和DownloadFile,分別用於儲存使用者上傳到伺服器的檔案和供使用者從伺服器下載的檔案

 

2、編寫網頁檔案

建立一個Web窗體Default,包含Default.aspx和Default.aspx.cs兩個檔案,原始碼如下:

[Default.aspx]

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
		<table width="400" border="0" cellspacing="0" cellpadding="0">
      	<tr>
        	<td>
                <!-- 這裡是檔案上傳的控制元件 -->
                <asp:FileUpload ID="FileUpload1" runat="server" />
                <asp:Button ID="ButtonUpload" runat="server" Text="確認上傳" OnClick="ButtonUpload_Click" />
            </td>
     	</tr>
      	<tr>
        	<td>
                <!-- 這是個用來下載檔案的按鈕 -->
                <asp:Button ID="ButtonDownload" runat="server" Text="下載檔案" OnClick="ButtonDownload_Click" />
            </td>
      	</tr>
    	</table>
    </form>
</body>
</html>

[Default.aspx.cs]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.IO;   // 記得加這個引用,檔案下載要用到

public partial class _Default : System.Web.UI.Page
{
    // 檔案路徑引數
    private string UPLOAD_DIRECTORY = "UploadFile/";      // 上傳到伺服器的檔案放這裡
    private string DOWNLOAD_DIRECTORY = "DownloadFile/";  // 供使用者下載的檔案放這裡

    // 頁面載入
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    /*
     * 函式名:ButtonUpload_Click
     * 作用:響應使用者上傳檔案
     * 引數:object sender, EventArgs e
     * 返回:void
     */
    protected void ButtonUpload_Click(object sender, EventArgs e)
    {
        // 當選擇好上傳檔案時
        if (FileUpload1.HasFile)
        {
            // 確定上傳檔案的本地路徑
            string filePath = Server.MapPath("~/" + UPLOAD_DIRECTORY);

            // 確定檔名
            string fileName = FileUpload1.PostedFile.FileName;

            // 上傳到伺服器
            FileUpload1.SaveAs(filePath + fileName);

            // 提示上傳成功
            Response.Write("<p >上傳成功!</p>");
        }
        else
        {
            // 沒有選擇檔案就點選上傳時報錯,提示要選檔案
            Response.Write("<p >請選擇要上傳的檔案!</p>");
        }
    }

    /*
     * 函式名:ButtonDownload_Click
     * 作用:響應使用者下載檔案
     * 引數:object sender, EventArgs e
     * 返回:void
     */
    protected void ButtonDownload_Click(object sender, EventArgs e)
    {
        // 要下載的檔名,根據實際情況獲取到這種形式
        string filename = "test.jpg";

        try
        {
            // 伺服器檔案路徑
            string strFilePath = Server.MapPath("~") + "/" + DOWNLOAD_DIRECTORY + filename;
            FileInfo fileInfo = new FileInfo(strFilePath);
            Response.Clear();
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(fileInfo.Name));
            Response.AddHeader("Content-Length", fileInfo.Length.ToString());
            Response.ContentType = "application/x-bittorrent";
            Response.WriteFile(fileInfo.FullName);
            Response.End();
        }
        catch (System.Threading.ThreadAbortException ex)
        {
        }
        catch (Exception ex)
        {
        }
    }
}

3、執行測試

在VS2013裡點選除錯開始執行,這是開啟後的介面

點選“選擇檔案”去選擇本地檔案,比如我們選一個Image 1.png檔案,點選“確認上傳”

片刻會看到網頁顯示“上傳成功!”,表示剛剛的PNG檔案上傳到了伺服器,即網站所在的目錄

我們去網站檔案所在的目錄檢視一下,果然在UploadFile目錄下有剛剛上傳的檔案

點選“下載檔案”按鈕,瀏覽器會彈出下載檔案提示框,點選“下載”

片刻就會提示下載完畢,我們還是去下載到的目錄中看看

剛剛選擇的是下載到桌面,直接去桌面看就行了,我們確實發現剛剛下載了一個test.jpg檔案在桌面

當然,這個檔案下載是這裡固定了檔案的,根據程式碼我們可以自己實現選擇什麼樣的檔案去下載到本地

 

相關文章:Win7上在IIS伺服器中部署ASP.NET網站專案(完整demo)

(這篇文章裡面有網站部署和網站專案的建立)