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


    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)  { ... }  这样的方式处理多个文件的上传。

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

  • 相关阅读:
    java jdk1.8 32/64位 官方绿色版下载附安装教程
    坡度常用的表示方法
    就此道别
    阿里巴巴矢量图标库(iconfont)批量全选的方法
    thinkphp6.0 集成Alipay 手机和电脑端支付的方法
    法定的属于我的第23个年头已经结束,在今天迎来第24年的第一天。
    世界地图展开图,来自 Simon's World Map
    thinkphp6.0 composer 安装 web-token/jwt-framework 常见出错原因分析及解决方法
    thinkphp6 常用方法文档
    Python获取列表中的最后一个或者倒数第几个的方案
  • 原文地址:https://www.cnblogs.com/aaaaq/p/4484554.html
Copyright © 2020-2023  润新知