C#文件上传

文件上传到服务器上

Fileupload控件:只是用来选择 需要一个按钮提交

 

前台代码:

 

复制代码
<%@ 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" runat="server"accept=".jpg,.png" /><%--accept=".jpg,.png" 只能上传jpg和png格式--%>
        <asp:Button ID="Button1" runat="server" Text="上传" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
<script>
    document.getElementById("Button1").onclick = function () {
        var file1 = document.getElementById("FileUpload1");
        if (file1.files[0].size>(2*1024*1024))   //获取文件的大小file1.files[0].size
        {
            document.getElementById("Label1").innerHTML = "JS告诉你文件过大";
            return false;
        }
    }

</script>
复制代码

 

后台代码:

 

复制代码
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;//上传按钮
    }
    //上传按钮点击事件
    private void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.postedFile.ContentLenth>(1024*1024*2))//文件小于2M才给上传如果文件超过了显示的大小还是会报错
        {
            提示过大
        }
        else { }
        string path = "uploads/" + FileUpload1.FileName;  //获取新建文件夹uploads的路径  +FileUpload1.FileName原文件的名字
        string path1 = "uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;//防止传的文件重名加个时间精确到毫秒
        string path2 = "uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;//防止传的文件重名加个时间精确到毫秒再加用户名
        string endpath = Server.MapPath(path);//设置绝对路径 (要获取绝对路径的文件)
        FileUpload1.SaveAs(endpath);//将上传的内容保存到获取的绝对路径  需要一个路径 建一个文件夹uploads放保存的东西   ()括号内为绝对路径

    }
}
}
复制代码

 

Web.config  代码:

 

复制代码
<?xml version="1.0" encoding="utf-8"?>

<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

    <system.web>
      <compilation debug="true" targetFramework="4.0" />
      <httpRuntime maxRequestLength="40960"/><!--设置最大上传40MB 以b为单位-->
    </system.web>

</configuration>
复制代码

 

问题1:如何保留原有名称?

 string path = "uploads/" + FileUpload1.FileName; 

 

问题2:重名问题如何解决? ;

  string path2 = "uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;//防止传的文件重名加个时间精确到毫秒再加用户名

 

问题3:如何限制选择文件的类型?

  前台代码

  <asp:FileUpload ID="FileUpload1" runat="server"accept=".jpg,.png" /><%--accept=".jpg,.png" 只能上传jpg和png格式--%>

 

问题4:大文件问题 程序默认允许的上传文件大小为 4MB

一、扩容   C#大文件上传/断点续传

  Web.config

复制代码
<configuration>

    <system.web>
      <compilation debug="true" targetFramework="4.0" />
      <httpRuntime maxRequestLength="40960"/><!--设置最大上传40MB 以b为单位-->
    </system.web>

</configuration>
复制代码

 

 二、限制  服务端限制   

   

复制代码
 //上传按钮点击事件
    private void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.postedFile.ContentLenth>(1024*1024*2))//文件小于2M才给上传如果文件超过了显示的大小还是会报错
        {
            提示过大
        }
        else { }
        string path = "uploads/" + FileUpload1.FileName;  //获取新建文件夹uploads的路径  +FileUpload1.FileName原文件的名字
        string path1 = "uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;//防止传的文件重名加个时间精确到毫秒
        string path2 = "uploads/" + DateTime.Now.ToString("yyyyMMddhhmmssms") + Request.Cookies["user"].Value + FileUpload1.FileName;//防止传的文件重名加个时间精确到毫秒再加用户名
        string endpath = Server.MapPath(path);//设置绝对路径 (要获取绝对路径的文件)
        FileUpload1.SaveAs(endpath);//将上传的内容保存到获取的绝对路径  需要一个路径 建一个文件夹uploads放保存的东西   ()括号内为绝对路径

    }
复制代码

 

三、JS客户端限制

 

复制代码
<script>
    document.getElementById("Button1").onclick = function () {
        var file1 = document.getElementById("FileUpload1");
        if (file1.files[0].size>(2*1024*1024))   //获取文件的大小file1.files[0].size
        {
            document.getElementById("Label1").innerHTML = "JS告诉你文件过大";
            return false;
        }
    }

</script>
posted @ 2017-10-09 01:45  御风飞舞  阅读(8578)  评论(0编辑  收藏  举报