webform 上传

要使用控件 - FileUpload
1、如何判断是否选中文件?
FileUpload.FileName -
选中文件的文件名,如果长度不大于0,那么说明没选中任何文件
js - f.value.length

2、如何保存到服务器上?
FileUpload.SaveAs("绝对路径");

3、如何获得绝对路径?
先编写相对路径 - "UpLoads/abc.txt"
将相对路径映射成绝对路径 - Server.MapPath("UpLoads/abc.txt");

4、现在只能上传成为txt文件,并且名字只能是abc,如何保留文件原有的名字和文件类型?
"UpLoads/" + FileUpload1.FileName;

5、如何防止重名覆盖的问题?
"UpLoads/" + Request.Cookies["user"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;

6、如何限制选中文件的类型?
限制普通人,给控件添加属性 - accept=".jpg,.png,.jpeg,.txt"
限制找事的:

 1 document.getElementById("Button1").onclick = function () {
 2 var fileName = document.getElementById("FileUpload1").value;
 3 
 4 var name = fileName.substr(fileName.length - 4, 4);
 5 var name1 = fileName.substr(fileName.length - 5, 5);
 6 if (name != ".jpg" && name != ".png" && name != ".txt" && name1 != ".jpeg")
 7 {
 8 alert("请选择正确的文件!你要找事儿啊??");
 9 return false;
10 } 
11 };

7、控制上传文件的大小
扩容 - 系统默认允许最大上传长度是4MB
webconfig配置文件中写入

<system.web>
<compilation debug="false" targetFramework="4.0" />
<httpRuntime maxRequestLength="40000" />
</system.web>

百度搜,研究,C#大文件上传,断点续传。

注意!不要扩的太多,否则多人同时上传大文件会造成服务器内存不足!

限制大小
C#端限制:

if (FileUpload1.PostedFile.ContentLength>(4*1024*1024))
{
Label1.Text = "文件长度过长!!!";
return;
}

JS端限制:

var f = document.getElementById("FileUpload1");

if (f.files[0].size > (4 * 1024 * 1024)) {
alert("文件过大!!!");
return false;
}

案例:

界面:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 8     <title></title>
 9 </head>
10 <body>
11     <form id="form1" runat="server">
12     <div>
13         <asp:FileUpload ID="FileUpload1" runat="server" accept=".jpg,.png,.jpeg,.txt" />
14         <asp:Button ID="Button1" runat="server" Text="上传" />
15         <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
16     </div>
17     </form>
18 </body>
19 </html>
20 <script type="text/javascript">
21     document.getElementById("Button1").onclick = function () {
22         //限制选中文件的类型
23         var fileName = document.getElementById("FileUpload1").value;
24         var name = fileName.substr(fileName.length-4,4);//文件名后4位
25         var name1 = fileName.substr(fileName.length - 5, 5);//文件名后5位
26         if(name!=".jpg"&&name!=".png"&&name!=".txt"&&name1!=".jpeg")
27         {
28             alert("请选择正确的文件类型!!");
29             return false;
30         }
31         //限制大小
32         var fu = document.getElementById("FileUpload1");
33         //fu.files[0].size 选中文件的长度
34         if (fu.files[0].size > (4 * 1024 * 1024)) {
35             alert("文件过大");
36             return false;
37         }
38     }
39 </script>
界面

后台:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 
 8 public partial class _Default : System.Web.UI.Page
 9 {
10     protected void Page_Load(object sender, EventArgs e)
11     {
12         Button1.Click += Button1_Click;
13     }
14 
15     void Button1_Click(object sender, EventArgs e)
16     {
17         //若为选择文件
18         if (FileUpload1.FileName.Length <= 0)
19         {
20             Label1.Text = "请选择文件!";
21             return;
22         }
23         //若上传文件大于设置的最大长度
24         if(FileUpload1.PostedFile.ContentLength>(4*1024*1024))
25         {
26             Label1.Text = "文件过大!";
27             return;
28         }
29         //上传路径
30         string path = "Uploads" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
31         string endpath = Server.MapPath(path);
32         //保存到路径中
33         FileUpload1.SaveAs(endpath);
34 
35 
36     }
37 }
后台:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 
 3 <!--
 4   有关如何配置 ASP.NET 应用程序的详细信息,请访问
 5   http://go.microsoft.com/fwlink/?LinkId=169433
 6   -->
 7 
 8 <configuration>
 9 
10     <system.web>
11       <compilation debug="false" targetFramework="4.0" />
12       <httpRuntime maxRequestLength="4096"/>
13     </system.web>
14 
15 </configuration>
Web.config

 

posted @ 2017-01-06 11:01  浆糊033  阅读(165)  评论(0编辑  收藏  举报