ASP.NET 文件上传

在ASP中,将文件上传到服务器是一件非常麻烦的事情,通常需要第三方组件的支持。

 

在ASP.NET 1.x 中,要支持文件上传,只须使用HTML的Input(File)控件。把它作为服务器控件运行(手动设置runat="server") ,要直接操作 HttpPostedFile。

 

在ASP.NET 2.0中,新增了FileUpLoad服务器控件,使得上传更加简单。

包裝了一點點程式碼,我們不用再直接操作 HttpPostedFile,程式稍微簡潔了些。但是其內部還是在操作 HttpPostedFile。真正有價值的差異是 FileUpload 控制項的 FileBytes 屬性。
FileBytes 回傳的是 byte 陣列,等於是幫我們做了序列化,讓檔案上傳機制有了更多可能性,可以更方便的將檔案內容直接轉存到資料庫,或是將檔案傳遞給遠方 WebService 接收 .....
還有 FileBytes 屬性被標記為 Bindable(true),更可以將 FileUpload 控制項輕鬆搭配資料繫結控制項(例如 FormView)、DataSource 控制項(例如 ObjectDataSource),作資料繫結,當然省了相當多程式碼。


关于Input(File)和FileUpload的区别?

FileUpload是asp.net控件,input(file)是html静态控件。

一直提倡尽量使用HTML控件,而不要使用服务器控件,好像惟独这个是例外的。

一般情况下建议用FileUpload,如果在IE上要动态加入提交文件的数量,可以用html,js操作,方便。

 

input(File)控件使用例子。

如下面上传图片的例子。
首先申明使用命名空间。using System.IO;
在设计页面拖进一个input(File)控件,并把它作为服务器控件运行。其ID为myFile;然后拖进一个button,给button的单击时间添加如下代码:

protected void submit_Click(object sender, EventArgs e)
     {
         string phName = this.txtName.Text;
         string phType = this.ddlType.SelectedValue;
        
         if (this.myFile.PostedFile != null)
         {
             string photoName1 = myFile.PostedFile.FileName; //获取初始文件名
             int i = photoName1.LastIndexOf("."); //取得文件名中最后一个"."的索引
             string newext = photoName1.Substring(i); //获取文件扩展名
             if (newext != ".gif" && newext != ".jpg"&&newext!=".jpeg" && newext != ".bmp" && newext != ".png")
                 {
                     Response.Write("文件格式不正确!");
                     Response.End();
                 }
             DateTime now = DateTime.Now; //获取系统时间
             string photoName2 = now.Millisecond.ToString() + "_" + myFile.PostedFile.ContentLength.ToString() + newext; //重新为文件命名,时间毫秒部分+文件大小+扩展名
             myFile.PostedFile.SaveAs(Server.MapPath("photos" + photoName2)); // 保存文件到路径,用Server.MapPath()取当前文件的绝对目录.在asp.net里"/"必须用""代替
         }
}

HtmlInputFile对象与HTML文件输入元素对应。你可用由id属性指定的名称来访问它。它有下列特性:
    * PostedFile:上传文件的内容。
    * Accept:以逗号界定的MIME类型列表,指定可能提交的文件类型。
    * MaxLength:要提交的文件的最长文件名长度(包括路径)。
    * Size:用户输入/选择上传文件的文本框宽度。
以下是HTML输入控制的方法与特性:
    * FileName:用户计算机上的完全合格的文件名称。它还包含上传文件的本地路径。
    * ContentLength:上传文件的大小(字节)。
    * ContentType:上传文件的MIME内容类型。
    * InputStream:返回一个指向上传文件的流(Stream)对象,允许你阅读文件内容。
    * SaveAs:方便保存上传文件的内容。

 

FileUpload控件使用例子

待续。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值