zoukankan      html  css  js  c++  java
  • 用.NET的File控件上传文件的解决方案

    传大文件,有好几种方法:

    1、思归的HttpWorkerRequest方法,太难,看不懂:-(

    2、利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的。

    3、修改web.config文件,但是不能捕获错误。
    4、通过ftp的方式上传。服务器需要提供ftp服务。

    没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃鱼能聪明点。)

    那就仔细专研第三种方式吧!

    修改Webcong文件:

    以下为引用的内容:
    <system.web>
    <httpRuntime maxRequestLength="40690"
    useFullyQualifiedRedirectUrl="true"
    executionTimeout="6000"
    useFullyQualifiedRedirectUrl="false"
    minFreeThreads="8"
    minLocalRequestFreeThreads="4"
    appRequestQueueLimit="100"
    enableVersionHeader="true"
    />
    </system.web>


    其中与上传有密切关系的是:

    maxRequestLength

    指示 ASP.NET 支持的最大文件上载大小。

    该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。

    指定的大小以 KB 为单位。

    默认值为 4096 KB (4 MB)。

    executionTimeout

    指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。

    单位为秒,在上传大的文件时把这个设的大一些。

    如果服务器内存512M,已可上传大小160M的文件。(没试过,csdn上众帖子的一致意见。)

    到这里web.config的设置就已经结束。

    可是一旦上传文件的大小超过了这个设置的文件大小范围就会发生如下错误:

    该页无法显示

    您要查看的页当前不可用。网站可能遇到技术问题,或者您需要调整浏览器设置。

    虽然解决不了,那也要捕获这个错误啊!怎么办呢?

    最近吃了几条鱼,想了想,由于这个错误是由file控件引发的前台错误,所以在后台想利用try...catch来捕获是行不通的。

    于是想到了利用.NET的错误捕获页面的机制来处理。可行哦。



    以下为引用的内容:
    1、先设置web.config
    <customErrors mode="On"/>
    2、新建一个error.aspx 文件,专门用来捕获错误的。
    3、在上传文件的aspx页面的前台页面里添加page指令。ErrorPage="UploadError.aspx"
    4、在error.aspx中添加一些代码来判断错误信息是否是file引起的前台错误。
    public class UploadError : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    Exception ex = Server.GetLastError();
    if (ex != null)
    {
    Response.Redirect("../error.aspx");
    }
    else //前台错误ex为空值
    {
    Response.Redirect("uploadexcel.aspx?err=1"); //重新跳转到上传页面,
    加上err参数是为了显示错误信息
    }
    }

    5、显示错误提示。
    public class uploadexcel : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (Request["err"] == "1")
    {
    Page.RegisterStartupScript("budget","<script language = javascript>
    alert('Upload file has failed ! File size is too large !')</script>");
    }
    }
    }

  • 相关阅读:
    Android 中的 Service 全面总结
    数据库事务
    ADB server didn't ACK
    Eclipse中10个最有用的快捷键组合
    IoC框架
    Wifi相关的操作
    Hibernate generator小结
    不朽的青春
    JSCPC 2020 摸鱼记
    CCPC 2020 秦皇岛站 H题
  • 原文地址:https://www.cnblogs.com/zerogo/p/2209151.html
Copyright © 2011-2022 走看看