ASP.NET实现文件上传和下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Johan_Joe_King/article/details/84567220

###### 本文的开发配置 ######

.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两个文件,源代码如下:

扫描二维码关注公众号,回复: 4283382 查看本文章

[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)

(这篇文章里面有网站部署和网站项目的建立)

猜你喜欢

转载自blog.csdn.net/Johan_Joe_King/article/details/84567220