• ASP.NET 中对大文件上传的简单处理


    在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示。笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ASP.NET 中的大文件上传问题。

    首先,我们需要下载这个名为 RanUpLoad 的组件,可以去我的百度云盘下载: http://pan.baidu.com/s/1ntuMpQT

    下载完成之后,两个 dll 文件添加到项目的引用中区,xml 文件也要复制在项目中的 bin 文件夹下,也就是最后三个文件都要存在于 bin 文件夹中。

    接着,上传控件还是用 ASP.NET 中自带的 FileUpload 控件,需要添加的就是在 FileUpload 控件旁边加入标签:

    <radU:RadProgressManager ID="Radprogressmanager1" Width="100%" runat="server" />
    <radU:RadProgressArea ID="progressArea1" Width="100%" runat="server"></radU:RadProgressArea>

    并且在 aspx 文件的起始处添加如下代码:

    <%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" Assembly="Telerik.QuickStart" %>
    <%@ Register TagPrefix="radU" Namespace="Telerik.WebControls" Assembly="RadUpload.Net2" %>

    当然,配置文件的 <system.web> 标签中不能忘记下面这些语句:

    <httpRuntime executionTimeout="3600" maxRequestLength="2097151" ></httpRuntime>
    <httpModules>   <add name="RadUploadModule" type="Telerik.WebControls.RadUploadHttpModule, RadUpload.Net2"/> </httpModules> <httpHandlers>   <add verb="*" path="Telerik.RadUploadProgressHandler.aspx" type="Telerik.WebControls.RadUploadProgressHandler, RadUpload.Net2"></add> </httpHandlers>

    现在,外部的轮廓都已经布好了,接下来就是点击上传之后服务器端所需的操作:

    当然,做这些操作之前,我们先 using 一下 Telerik.WebControls 命名空间。

    // 检查文件
    if (RadUploadContext.Current == null) { return; }
    if (RadUploadContext.Current.UploadedFiles.Count <= 0) 
    {
      this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "MsgBox", "<script>alert('请选择上传文件 !')</script>"); 
      return;
    }
    if (RadUploadContext.Current.UploadedFiles[0].ContentLength >= 2147483647)
    {
      this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "MsgBox", "<script>alert('上传的文件不得超过 2GB !')</script>");
      return;
    }
    UploadedFile file = RadUploadContext.Current.UploadedFiles[0];
    string fileName = Path.GetFileName(file.FileName);
    string virtualPath = System.IO.Path.Combine("~/save", fileName);
    string savePath = this.MapPath(virtualPath);
    file.SaveAs(savePath, true);  

    至此,文件上传的处理工作已经完成,以上的 cs 代码是我自己的一些操作处理,大家可以根据自己情况酌情修改,比如也可以放置多个 FileUpload 控件,

    用 foreach (UploadedFile file in RadUploadContext.Current.UploadedFiles)  { ... }  这样的方式处理多个文件的上传。

    希望此篇文章可以帮助对大文件上传头疼的朋友们去轻松处理上传问题。

  • 相关阅读:
    JQ 鼠标滑过按钮改变背景图片
    TreeView 用法(有代码)
    MVC框架 IE浏览时IIS配置
    table 边框 不显示好td内为空串时,边框不显示
    DIV 内滚动条 样式的写法
    用 Grid 数据绑定
    架设支持Silverlight的Web服务器
    c# sql like @参数
    IE8 的margintop兼容问题
    弱符号与强符号
  • 原文地址:https://www.cnblogs.com/uppercloud/p/bigfileupload.html
Copyright © 2020-2023  润新知