首页 > 代码库 > 文件上传
文件上传
1.文件上传的页面
2.上传文件要保存的文件夹
1.只要将文件传上来就行
//1、获取要上传的文件,并且知道要上传到服务器的路径
string s = "Uploads/aaa.txt";
//2、生成绝对路径
string path = Server.MapPath(s);
//3、上传
FileUpload1.SaveAs(path);
问题:文件类型保存不住,名字无法修改,覆盖已上传的文件
优化1:保留文件原有的名字
解决:把路径中的文件名替换为控件选中的文件名
string s = "Uploads/" + FileUpload1.FileName;
问题:文件名一样,会覆盖,造成文件丢失
解决:文件名拼接时间和用户名
string s = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;
问题:文件过大,但是还要上传
解决:不是特别大可以更改请求最大长度,
如果特别大:C#大文件断点续传
扩容:在web.config中的<system.web>标记中
<httpRuntime maxRequestLength="40960"/>
解决:限制上传文件的大小
服务端限制:
if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
{
Label1.Text = "文件过大!";
return;
}
客户端限制:
fl.files[0].size > 1024 * 1024 * 4
问题:限制上传文件的类型
<asp:FileUpload ID="FileUpload1" accept=".jpg,.jpeg,.png" runat="server" />
前端代码
<%@ 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"> <div> <asp:FileUpload ID="FileUpload1" accept=".jpg,.jpeg,.png" runat="server" /> <asp:Button ID="Button1" runat="server" Text="保存" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <%--上传后图片显示--%> <asp:Image ID="Image1" runat="server" /> </div> </form> </body> </html> <script type="text/javascript"> document.getElementById("Button1").onclick = function () { var fl = document.getElementById(‘FileUpload1‘); if (fl.value.length <= 0) { document.getElementById(‘Label1‘).innerHTML = "请先选择要上传的文件!"; return false; } else { if (fl.files[0].size > 1024 * 1024 * 4) { document.getElementById(‘Label1‘).innerHTML = "文件过大,不允许超过4MB大小!"; return false; } } } </script>
后端
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } void Button1_Click(object sender, EventArgs e) { if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4) { Label1.Text = "文件过大!"; return; } //1、获取要上传的文件,并且知道要上传到服务器的路径 string s = "Uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName; //2、上传 string path = Server.MapPath(s); Label1.Text = path; FileUpload1.SaveAs(path); Image1.ImageUrl = s; }
文件上传