Asp.net C#文件上传及访问

上传文件: 保存物理路径到博客。
保存文件: 利用FileUpload控件的SaveAs(string filename)方法,将上传文件保存到服务器上。
文件访问: 通过超链接形式,来访问。
步骤:

  • 用HasFile判断是否上传了文件
  • 在服务器上指定物理路径,并检查路径是否存在,如果不存在则先创建
  • 用SaveAs方法保存上传的文件。
  • 相对路径通过连接形式展示出来,点击即可查看文件,如果是rar等格式,点击后会出现下载提示。
    详细代码如下:
    创建一个Upload.aspx页面,代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Upload.aspx.cs" Inherits="WebApplication1.Upload" %>

<!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">
        <div>
               <asp:FileUpload ID="fileUpload" runat="server" />
                <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="上传" />
                <asp:Literal ID="literal" runat="server"></asp:Literal>
        </div>
    </form>
</body>
</html>

Upload.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.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    public partial class Upload : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnUpload_Click(object sender, EventArgs e)
        {
            //用HasFile,判断是否上传了文件
            if(fileUpload.HasFile)
            {
                //指定上传文件在服务器上的保存路径
                string savePath = Server.MapPath("~/upload/");
                //检查服务器上是否存在这个物理路径,如果不存在则创建
                if(!System.IO.Directory.Exists(savePath))
                {
                    //需要注意的是,需要对这个物理路径有足够的权限,否则会报错
                    //另外,这个路径应该是在网站之下,而将网站部署在C盘却把上传文件保存在D盘
                    System.IO.Directory.CreateDirectory(savePath);
                }
                savePath = savePath + "\\" + fileUpload.FileName;
                fileUpload.SaveAs(savePath);//用Save(),保存文件            
                //不过需要注意的是,在客户端访问却需要指定的是URL地址,而不是在服务器上的物理地 址           
                literal.Text = string.Format("<a href='upload/{0}'>upload/{0}</a>", fileUpload.FileName); 
            }
        }
    }
}
发布了96 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Ciel_Y/article/details/103573819