asp.net中fileupload上传文件的方法

FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\test。txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。

用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器。您必须显式提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击它即可上载文件。为保存指定文件所写的代码应调用 SaveAs 方法,该方法将文件内容保存到服务器上的指定路径。通常,在引发回发到服务器的事件的事件处理方法中调用 SaveAs 方法。

在文件上传的过程中,文件数据作为页面请求的一部分,上传并缓存到服务器的内存中,然后再写入服务器的物理硬盘中。

FileUpload控件常用的几个公开的只读属性

           名  称                        返回类型                                    说  明
   FileContent   Stream   返回一个指向上传文件的Stream流对象
   FileName   string   返回上传文件在客户端的文件名称,不包含路径信息
   HasFile   Boolean   获取一个布尔值,用于表示FileUpload控件是否已经包含一个文件
   PostedFile   HttpPostedFile   获取一个与上传文件相关的HttpPostedFile对象,使用该对象可以获取上传文件的相关属性。下表列出了它所公开的只读属性

HttpPostedFile属性

           名  称                    返回类型                                   说  明
   ContentLength   integer    返回上传文件的按字节表示的文件大小
   ContentType   string    返回上传文件的MIME内容类型
   FileName   string    返回文件在客户端的完全限定名
   InputStream   Stream    返回一个指向上传文件的流对象

有三个方面需要注意

1.确认是否包含文件

在调用 SaveAs 方法将文件保存到服务器之前,使用 HasFile 属性来验证 FileUpload 控件确实包含文件。若 HasFile 返回 true,则调用 SaveAs 方法。如果它返回 false,则向用户显示消息,指示控件不包含文件。不要通过检查PostedFile 属性来确定要上载的文件是否存在,因为默认情况下该属性包含 0 字节。因此,即使 FileUpload 控件为空,PostedFile 属性仍返回一个非空值。

2.文件上传大小限制

默认情况下,上传文件大小限制为 4096 KB (4 MB)。可以通过设置 httpRuntime 元素的maxRequestLength 属性来允许上载更大的文件。

相关节点如下:

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

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

若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的maxRequestLength 属性。
上载较大文件时,用户也可能接收到以下错误信息:

was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
以上信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是<processModel>配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,不建议使用。

3.上传文件夹的写入权限

应用程序可以通过两种方式获得写访问权限。您可以将要保存上载文件的目录的写访问权限显式授予运行应用程序所使用的帐户。您也可以提高为 ASP.NET 应用程序授予的信任级别。若要使应用程序获得执行目录的写访问权限,必须将 AspNetHostingPermission 对象授予应用程序并将其信任级别设置为AspNetHostingPermissionLevel.Medium 值。提高信任级别可提高应用程序对服务器资源的访问权限。请注意,该方法并不安全,因为如果怀有恶意的用户控制了应用程序,他(她)也能以更高的信任级别运行应用程序。最好的做法就是在仅具有运行该应用程序所需的最低特权的用户上下文中运行 ASP.NET 应用程序。

可以通过3种方法访问上传文件:

1.通过FileBytes属性。该属性将上传文件数据置于字节数组中,遍历该数组,则能够以字节方式了解上传文件的内容。

2.通过FileContent属性。调用该属性可以获得一个指向上传文件的Stream对象。可以使用该属性读取上传文件数据,并使用FileBytes属性显示文件内容。

3.通过PostedFile属性。调用该属性可以获得一个与上传文件相关的HttpPostedFile对象,使用该对象可以获得与上传文件相关的信息。例如,调用HttpPostedFile对象的ContentLength,可以获得上传文件大小;调用HttpPostedFile对象ContentType属性,可以获得上传文件的类型;调用HttpPostedFile对象的FileName属性,可以获得上传文件在客户端的完整路径(调用FileUpload控件的FileName属性,仅能获得文件名)。

FileUpload控件上传简单实例:

C# 代码   复制

//前台就随便拖一个FileUpload控件和一个button控件

<asp:FileUpload ID="FileUpload1" runat="server" /><br />

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

//后台

using System;

using System.Data;

using System.Configuration;

using System.Collections;

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 Manage_News_upload : System.Web.UI.Page

{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            string fileExrensio = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();//ToLower转化为小写
            string FileType = FileUpload1.PostedFile.ContentType;
            string UploadURL = Server.MapPath("~/upload/");//上传的目录
            if (FileType == "image/bmp" || FileType == "image/gif" || FileType == "image/jpeg" || FileType == "image/jpg" || FileType == "image/png")//判断文件类型
            {

                try
                {
                    if (!System.IO.Directory.Exists(UploadURL))//判断文件夹是否已经存在
                    {
                        System.IO.Directory.CreateDirectory(UploadURL);//创建文件夹
                    }

                    FileUpload1.PostedFile.SaveAs(UploadURL + FileUpload1.FileName);
                }
                catch
                {
                    Response .Write ("失败");
                }
            }
            else
            {
                Response.Write("格式错误");
            }
        }
        else
             Response.Write("请选择文件");
    }
}

上面的实例还有很多属性没有用到,大家可以根据需要自己添加属性判断,写出满足自己项目的上传方法.

asp.net中fileupload上传文件的方法

时间: 2024-10-21 08:34:08

asp.net中fileupload上传文件的方法的相关文章

ASP.NET使用FileUpload上传文件

前台代码: Html代码   <asp:FileUpload ID="fuKeleyi" runat="server" /> <asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" /> <asp:Label ID="LabMsg" runat=&quo

在asp.net 中怎样上传文件夹

以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"

MVC中如何上传文件

本文导读:在MVC中实现文件上传与传统的WebForm上传文件方法都差不多,在cshtml视图页面放一个file标签,然后在actionname方法中处理用户上传的文件.下面简单介绍MVC中上传文件的方法. 一.MVC中如何上传文件 1.在Web Forms中,当你把一个FileUpload控件拖到设计器中,你或许没有注意到在生成的HTML中会在form标签中加入一条额外属性 enctype="multipart/form-data". 而FileUpload控件本身会生成为<i

【springmvc】springmvc中如何上传文件

使用到的组件:可自行根据情况选择版本 <!--上传依赖包--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> <!--commons-upload依赖包begin-->

ASP.NET 5 :上传文件(转)

(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:在ASP.NET 5(MVC 6)中处理上传文件的方式和之前有所不同. 在MVC 5之前的版本中上传文件,有两种方式. 1,直接对Request.Files进行访问获取HttpPostedFileBase,如下面代码所示: [HttpPost] public ActionResult Upload() { string path = @"D:\Temp\"; HttpPostedFileBas

朋友封装的一个ASP.NET上传文件的方法

自我感觉封装得还不错!!! 代码如下: C#代码   #region 上传文件的方法 /// <summary> /// 上传文件方法 /// </summary> /// <param name="myFileUpload">上传控件ID</param> /// <param name="allowExtensions">允许上传的扩展文件名类型,如:string[] allowExtensions = 

朋友封装的一个ASP.NET上传文件的方法(转)

#region 上传文件的方法 /// <summary> /// 上传文件方法 /// </summary> /// <param name="myFileUpload">上传控件ID</param> /// <param name="allowExtensions">允许上传的扩展文件名类型,如:string[] allowExtensions = { ".doc", ".

FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输

fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,windos环境下可视化工具filezilla可#以很容易实现文件的传输. 本例中主要是c#使用Renci.SshNet.dll实现SFTP文件传输. 代码如下: protected void btnExcelImport_Click(object sender, EventArgs e) { if (

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f