FileUpload控件要与Button、LinkButton、ImageButton配合使用

FileUpload控件的方法及属性:

1、SaveAs("要上传到服务器的绝对路径")方法:用来上传文件

注:一般使用Server.MapPath()方法进行相对路径与绝对路径之间的转换。

2、FileName属性:要上传文件的文件名,不带路径

3、PostedFile.ContentLength属性:获得上传文件的字节长度,除以1024,得到KB

<一>最简单的上传

//点击上传
protected void Button1_Click(object sender, EventArgs e)
{
  string path=Server.MapPath("uploads/aaa.doc");//需要路径映射
  FileUpload1.SaveAs(path);//此方法需要绝对路径
}

问题:所有上传文件都叫同一个名

》》优化一:使用FileUpload的FileName属性,获取上传文件的客户端的名字

string fileName = FileUpload1.FileName;//获取文件的客户端的名字
string path = Server.MapPath("uploads/" + fileName);
FileUpload1.SaveAs(path);

问题:如果不同用户在同一时间上传同一文件名的文件,应该避免文件的覆盖

》》优化二:解决不同用户同一时间上传同一文件名的情况(在文件名中使用用户名加以区分)

if (Session["user"] != null)
{
  string fileName = DateTime.Now.ToString("yyyyMMddmmss")+Session["user"].ToString()+ FileUpload1.FileName;

//在文件名中加上时间和用户名
  string path = Server.MapPath("uploads/" + fileName);
  FileUpload1.SaveAs(path);
}

else
{
  Response.Redirect("Default2.aspx");
}

问题:上传文件大于4M,程序会报错。系统默认的文件最大为4M,也就是4096K

》》优化三:扩容

在Web.Config中配置上传请求的最大长度

<system.web>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime maxRequestLength="10240" />//扩容也不要太大,空值在10M以内为佳
</system.web>

<二、多文件上传到服务器硬盘>

#简单实现:

思路:遍历页面Form中的每个控件,判断是否是FileUpload,如果是的话就把她强制转化成FileUpload类型,再按单文件上传逐个上传即可

if (Session["user"] != null)
{

int i = 1;//文件上传的流水号
foreach (Control ctrl in this.form1.Controls)//遍历this(这个页面)中的form1(表单1这个类中的)Controls(所有控件),其中包含了按钮之类,要排除在外
{
if (ctrl is FileUpload)//判断是否是FileUplaod类型
{
FileUpload file = (FileUpload)ctrl;//如果是FileUpload类型,就强制转化一下
//以下还是上传单文件的步骤
string fileName = DateTime.Now.ToString("yyyyMMddmmss") + Session["user"].ToString() + i.ToString("0000") + file.FileName;
string path = Server.MapPath("uploads/" + fileName);
FileUpload1.SaveAs(path);
}
i++;//自增
}

问题:没有选择上传的文件也会在服务器端生成一个0KB的文件如图

             

》》优化:把没有选择上传的给跳过去

if (Session["user"] != null)
{
int i = 1;//文件上传的流水号
foreach (Control ctrl in this.form1.Controls)//遍历this(这个页面)中的form1(表单1这个类中的)Controls(所有控件),其中包含了按钮之类,要排除在外
{
if (ctrl is FileUpload)//判断是否是FileUplaod类型
{
FileUpload file = (FileUpload)ctrl;//如果是FileUpload类型,就强制转化一下
if (file.HasFile)//判断是否有文件,没有就跳过
{
//以下还是上传单文件的步骤
string fileName = DateTime.Now.ToString("yyyyMMddmmss") + Session["user"].ToString() + i.ToString("0000") + file.FileName;
string path = Server.MapPath("uploads/" + fileName);
FileUpload1.SaveAs(path);
}
}
i++;//自增
}

WebForm之FileUpload控件(文件上传)的更多相关文章

  1. asp.net+bootstrap上传图片+FileUpload控件文件上传下载

    ps:我数据库使用的pgsql,看个人修改. 代码asp.net 的,使用了mootools框架,里面包含了bootstrap上传图片,查看预览,还加了个上传任意文件的FileUpload.(界面随便 ...

  2. 20160620001 FileUpload控件获取上传文件的路径

    参考地址: http://bbs.csdn.net/topics/350051517 —————————————————————————————— 用js实现 <%@ Page Language ...

  3. swfupload控件文件上传大小限制设置

    swfupload控件,是我在开发过程中用到的上传文件的控件,非常实用和方便.但最近碰到一些问题,解决之后进行一下整理. 因为用户上传文件的大小限制增加,导致原本上传控件时,文件的大小需要进行调整和限 ...

  4. HTML5中的input type为file控件限制上传文件类型及扩展

    简单介绍 input file控件限制上传文件类型如下:1.文件类型中间用,分开:2.html和htm这样的要写成两个: 3实例: <input type="file" na ...

  5. 如何使用Python调用AutoIt来实现Flash控件的上传功能

    先看一段代码 upload.au3(这个后缀autoit3的格式): ;等待出现title为数据采集-军课网-MozillaFirefox的浏览器窗口 WinWait("数据采集 - XX网 ...

  6. dwz+jquery+fileupload+springmvc实现文件上传 及图片预览

    1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarD ...

  7. 框架中如何根据fileupload工具包实现文件上传功能

    工具包 Apache-fileupload.jar – 文件上传核心包. Apache-commons-io.jar – 这个包是fileupload的依赖包.同时又是一个工具包. 代码 servle ...

  8. FileUpload框架实现文件上传(多个文件)和下载

    一.文件上传: 对于大文件执行下面的代码之间卡死 package com.example.web.service.servlet; import java.io.File; import java.i ...

  9. 模拟文件上传(二):使用apache fileupload组件进行文件上传

    其中涉及到的jar包: jsp显示层: <%@ page language="java" import="java.util.*" pageEncodin ...

随机推荐

  1. css3属性column知多少

    CSS3 可以将文本内容设计成像报纸一样的多列布局.像下面这样: 这样的布局称为"多列布局". 对多列属性分别进行学习: 对于 column 的所有属性,ie10+ 支持,fire ...

  2. runc kill 和 delete流程分析

    runc kill // kill sends the specified signal (default: SIGTERM) to the container's init process 1.ru ...

  3. jmeter的使用(四)

    jmeter如何调用java程序呢,下面做简单介绍.1.打开eclipse,新建项目,导入jmeter依赖的包ApacheJMeter_core.jar和ApacheJMeter_java.jar,这 ...

  4. hdu 5861 Road 两棵线段树

    传送门:hdu 5861 Road 题意: 水平线上n个村子间有 n-1 条路. 每条路开放一天的价格为 Wi 有 m 天的操作,每天需要用到村子 Ai~Bi 间的道路 每条路只能开放或关闭一次. ( ...

  5. RabbitMQ - 实例操作

    以前在单项目中用过RabbitMQ,没有问题 不过这次在分布式项目中使用RabbitMQ中有点搞糊涂了,但是实际上是没有问题的,思路清晰就行 简单看一下实际操作的示例吧: 资源文件中需要配置基本的ra ...

  6. Sprite Editor 图集切片精灵

    切图需求 假设有一张大的UI的图集,我们想把它里面的小图一张一张地切割出来,如果有plist文件,请查阅我的另一篇文章<还原TexturePacker plist 文件 切开各小图片> 今 ...

  7. Linux下Tomcat的启动、关闭、杀死进程

    打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.ou ...

  8. C#中事件的继承

    C#中的子类无法调用父类的事件,可以通过在父类中创建一个方法来调用父类的事件,而子类通过调用父类的方法来触发事件. class parent { protected string name; publ ...

  9. php基础23:数值与数值函数

    <?php //1.自动转换 $a = 5; $b = "5a"; $c = $a + $b; echo $c; echo "<br>"; $ ...

  10. Linux第四次学习笔记

    程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i48 ...