ASP.NET中FileUpload文件上传控件应用实例_基础应用

使用 FileUpload 控件,可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。要上载的文件将在回发期间作为浏览器请求的一部分提交给服务器。在文件上载完毕后,您可以用代码管理该文件。

大致了解了一下FileUpload,让我们来看一下FileUpload几个实际应用中问题的处理方法。

1.一次上传多个文件

要一次上传多个文件,我们可以像传单个文件那样对每个文件单独进行处理,除此之外,我们还可以使用HttpFileCollection类捕获从Request对象发送来的所有文件,然后再单独对每个文件进行处理,代码如下:

复制代码 代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
    string filepath = Server.MapPath("upload") + "\\";
    HttpFileCollection uploadFiles = Request.Files;
    for (int i = 0; i < uploadFiles.Count; i++)
    {
        HttpPostedFile postedFile = uploadFiles[i];
        try
        {
            if (postedFile.ContentLength > 0)
            {
                Label1.Text += "文件 #" + (i + 1) + ":" + System.IO.Path.GetFileName(postedFile.FileName) + "<br/>";
                postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));
            }
        }
        catch (Exception Ex)
        {
            Label1.Text += "发生错误: " + Ex.Message;
        }
    }
}

2.上传文件类型的验证

对上传文件类型的验证既可以在客户端进行,也可以在服务器端进行。客户端可以使用验证控件来进行,不过我们今天主要说说如何在服务器端进行验证。上边cs文件中已经用GetExtension获取了文件的扩展名,只要稍加判断即可实现上传类型的验证:

复制代码 代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        fileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
        if (fileExt == ".rar" || fileExt == ".zip")
        {
            try
            {
                FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
                Label1.Text = "客户端路径:" + FileUpload1.PostedFile.FileName + "<br>" +
                              "文件名:" + System.IO.Path.GetFileName(FileUpload1.FileName) + "<br>" +
                              "文件扩展名:" + System.IO.Path.GetExtension(FileUpload1.FileName) + "<br>" +
                              "文件大小:" + FileUpload1.PostedFile.ContentLength + " KB<br>" +
                              "文件MIME类型:" + FileUpload1.PostedFile.ContentType + "<br>" +
                              "保存路径:" + Server.MapPath("upload") + "\\" + FileUpload1.FileName;
            }
            catch (Exception ex)
            {
                Label1.Text = "发生错误:" + ex.Message.ToString();
            }
        }
        else
        {
            Label1.Text = "只允许上传rar、zip文件!";
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }
}

需要注意的是,我们不能过分依赖于客户端验证控件和服务器端上述方法的验证,因为用户只需将文件扩展名更改为允许的类型就可以避开上边的验证,这对用户来说并不是件困难的事情。

3.解决文件大小限制

在ASP.NET 2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:

复制代码 代码如下:

<system.web>
    <httpRuntime maxRequestLength="40690" executionTimeout="6000" />
</system.web>

maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。

4."multipart/form-data"和Request共存

在ASP程序中一旦使用表单上传文件(form的enctype属性值为multipart/form-data),服务器端就不能再用Request.Form来获取表单的值,这种限制在ASP.NET 2.0中已经不存在了:

复制代码 代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        try
        {
            FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
            Label1.Text = "上传文件:" + FileUpload1.FileName + "<br>" +
                          "说明:" + Request.Form["TextBox1"];//也可以用"TextBox1.Text"来获取说明
        }
        catch (Exception ex)
        {
            Label1.Text = "发生错误:" + ex.Message.ToString();
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }
}

应用范例

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
 <title>无标题页</title>
</head>
<body>
 <form id="form1" runat="server">
  <asp:FileUpload ID="FileUpload1" runat="server" />
  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
  <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUpload1"
   ErrorMessage="必须是 jpg或者gif文件" ValidationExpression="^(([a-zA-Z]:)|(\\{2}\W+)\$?)(\\(\W[\W].*))+(.jpg|.Jpg|.gif|.Gif)$"></asp:RegularExpressionValidator>
 </form>

</body>
</html>

Default.aspx.cs:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {

 }
 protected void Button1_Click(object sender, EventArgs e)
 {
  String savePath = @"F:\111\";
  if (FileUpload1.HasFile)
  {
   String filename;
   filename = FileUpload1.FileName;
   savePath +=filename;
   FileUpload1.SaveAs(savePath);
   Page.Response.Write(FileUpload1.PostedFile.ContentType + FileUpload1.PostedFile.ContentLength+"<br>");
   Page.Response.Write("<img src='"+savePath+"'>");

  }
  else
  {
   Page.Response.Write("fff");
  }
 }

}

该范例应用RegularExpressionValidator控件限制只能上传jpg、Jpg、gif、Gif格式的文件,当然最好后台也做一下限制,上面已经讲解过具体的操作方法。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索asp.net
fileupload
,以便于您获取更多的相关知识。

时间: 2024-10-15 02:56:18

ASP.NET中FileUpload文件上传控件应用实例_基础应用的相关文章

asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件

问题描述 asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件我现在要上传文件,但是在点击浏览的时候我想要打开一个指定的目录,然后在这个目录中选择文件..用什么方法能够实现呢?请各位大侠帮忙呀!!!!!!!!!??????????????????????????谢谢各位!!!!!!!! 解决方案 解决方案二:属于客户端程序,安全考虑的话怕不可行解决方案三:可以,将所选目录文件列出就行了,用常用的IO操作就能实现CSD

asp.net中fileupload文件上传及路径问题

用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:MyFilestest.txt)来指定要上载的文件.用户也可以通过单击"浏览"按钮,然后在"选择文件"对话框中定位文件来选择文件. 用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器.您必须显式提供一个控件或机制,使用户能提交指定的文件.例如,可以提供一个按钮,用户单击它即可上载文件.为保存指定文件所写的代码应调用 SaveAs 方法,该方法将文件内容保存到服务器上的指定路

ASP.NET 2.0文件上传控件

在ASP.NET 1.0/1.1,您可以上传文件使用的HTML文件上传服务器的控制.这种控制使一个<input type="file">网页上的内容,使最终用户将文件上载到服务器.要使用该文件,但是,你必须要做出的修改夫妇到页.例如,您都必须添加字符编码="多重/表单数据"页面的<form>元素. ASP.NET 2.0中引入了一个新文件上传服务器控件,使得文件上传到服务器的过程更加简单.当给一个页面的能力,上传文件,您只需包括新<as

ASP.NET中 CheckBox复选框控件的使用_基础应用

我们可以使用两种类型的 ASP.NET 控件将复选框添加到 Web 窗体页上:单独的 CheckBox 控件或 CheckBoxList 控件.两种控件都为用户提供了一种输入布尔型数据(真或假.是或否)的方法. 这里我们单独使用CheckBox,先来看看它的属性 属性 描述 .NET AutoPostBack 规定在 Checked 属性已改变后,是否立即向服务器回传表单.默认是 false. 1.0 CausesValidation 规定点击 Button 控件时是否执行验证. 2.0 Che

ASP.NET文件上传控件Uploadify的使用方法_实用技巧

对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步机制,当大文件通过HTTP方式发送到服务端时,对于服务端站点的主线程影响比较大,会产生阻塞,所以,现在很多上传控制都是异步,多线程的方式去实现的. 今天来介绍一个文件上传控制,它就是Uploadify,它应该是flash的异步上传工具,对于大文件支持还不错,所以,我选择了它. 相关API介绍 upl

5款Ajax 文件上传控件_AJAX相关

1. FancyUpload (演示地址) FancyUpload是一个采用Flash与Ajax(MooTools)技术实现包含上传进度条的多文件上传组件,类似于SWFUpload. 2. SwfUploadPanel (演示地址) SwfUploadPanel是一个结合SwfUpload v2.0.2与ExtJS 2.0.x开发的多文件上传面板(panel). 3. Yahoo! UI Library: Uploader (演示地址) YUI Uploader Control结合Flash开发

自定义文件上传控件样式-input透明法

自定义文件上传控件样式-input透明法. 作为一个刚入坑不久的程序小白,今天和一个自定义<input type="file">控件的工作斗智斗勇了一上午.通过各种膜拜大神们的资料,总算最后有了一个还算看的过去的解决方案,来记录一下. 页面中,<input type="file">控件的默认显示 在Chrome中是这样: 在IE里是这样: 要如何使它变成下面这样,点击此区域也能上传文件呢? 原理:将input放进一个具有背景的div标签中,并

jQuery文件上传控件 Uploadify 详解_jquery

基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个版本,一个用flash,一个是html5.html5的需要付费~所以这里只说flash版本的用法. 官网:http://www.uploadify.com/ 控件截图: 用法: 首先引用下面的文件 <link rel="stylesheet" type="text/css&

Javascript美化input=file文件上传控件

[实例名称] JS实现文件上传一次性完成 [实例描述] 默认的HTML控件file可以实现文件的上传,但必须经过选择文件和单击上传按钮两个步骤.本例学习如何实现一步上传文件的操作. 例子  代码如下 复制代码 <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页-学无忧(www.111cn.net)</title> </head> <body>