2017-5-27 WebForm 文件上传

文件上传

准备工作
  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" />

 

完整的文件上传代码:

html页面代码和js页面段限制:

 

<%@ 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,.png,.jpeg,.avi" runat="server" />
        <asp:Button ID="Button1"  runat="server" Text="保存" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
<script type="text/javascript">
    
        var but = document.getElementById('Button1');
        but.onclick = function ()
        {
            var fu = document.getElementById('FileUpload1');
            if (fu.value.length <= 0) {
                document.getElementById('Label1').innerText = "请先选择文件";
                return false;
            }
            else
            {
                if (fu.files[0].size > 1024 * 1024 * 4) {
                    document.getElementById('Label1').innerText = "文件过大,不能上传";
                    return false;
                }
                else {
                    document.getElementById('Label1').innerText = fu.files[0].size;
                }
            }
        }

</script>
View Code

 

后台端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Click += Button1_Click;
    }

    void Button1_Click(object sender, EventArgs e)
    {
        //限制文件上传的大小,不超过4mb
        if (FileUpload1.PostedFile.ContentLength > 1024 * 1024 * 4)
        {
            Label1.Text = "文件过大,不予上传";
        }
        Label1.Text = FileUpload1.PostedFile.ContentLength.ToString();
        //获取要上传的路径,并且知道要上传到服务器的路径  放置上传文件的时候文字重复 DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName
        string ss = "images/" + DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName ;
        //生成绝对路径
        string path = Server.MapPath(ss);
        //上传
        FileUpload1.SaveAs(path);
    }
}
View Code

 

posted @ 2017-05-27 10:56  青年a  阅读(158)  评论(0编辑  收藏  举报