gpt4 book ai didi

asp.net - 超过 IIS 7.5 和 .NET 中的 2GB 文件上传限制

转载 作者:行者123 更新时间:2023-12-04 08:26:32 24 4
gpt4 key购买 nike

我有一个需要上传超过 2GB 的 (.iso) 文件的 Intranet 应用程序。 2GB 文件大小似乎有许多限制因素。

  • IE 内有浏览器限制,只有 IE 9/10 可以超过 2GB According to Eric Law
  • httpRuntime 的 maxRequestLength 元素为 Int32 类型,最大值为 2097151,大约为 2GB。

  • 看来您可以使用 maxAllowedContentLength 将另一个文件大小限制设置为大约 4GB,因为它是 uint 类型,但是当我们仍然受到 maxRequestLength 的 2GB 限制时,这有什么用?
    <system.webServer>
    <security>
    <requestFiltering>
    <requestLimits maxAllowedContentLength="4294967295" />
    </requestFiltering>
    </security>
    <system.webServer>

    有没有人有上传超过 2GB 限制的文件的任何解决方案?

    最佳答案

    你愿意接受 JavaScript 解决方案吗??。如果是这种情况,请尝试 this jQuery 插件,可让您上传海量数据(大量 GB)。
    如果浏览器不支持提供受 TCP/IP 启发的机制,它会使用 HTML5 FileReader API 功能和 Silverlight 回退上传文件,并使用相应的 ACK 发送和接收包。文件按配置大小的块上传(默认为 4 MB)。

    另外:它还带有文件队列模式。

    以下是如何在 Razor View 中使用它的示例:

    $(function () {

    var file = $("#file").createUploaderHtml5({
    postDataUrl: "@Url.Action("Upload", "Home")",
    packetSize: 4 * 1024 * 1024,
    onPreparingUpload: function (plugin, ufname, umime, usize) {
    plugin.settings.logger("ufname = [" + ufname + "] umime = [" + umime + "] usize = [" + usize + "]");
    return true;
    },
    onInitPacketArrived: function (plugin, guid) {
    plugin.settings.logger("guid = [" + guid + "]");
    },
    onDataPacketArrived: function (plugin, ack, total) {
    //plugin.settings.logger("ACK [" + ack.Guid + "] packet = [" + ack.Packet + "] total = [" + total + "]");
    var percent = Math.round(ack.Packet / total * 100);
    $("#progressbar").attr("value", percent);
    $("#percent").html(percent + " %");
    },
    onFileUploaded: function (pl) {
    pl.settings.logger("File finished!!!");
    },
    logger: function(msg) {
    var lg = $("#logger");
    lg.html(lg.html() + msg + "<br />");
    }
    });

    $("#start").click(function () {
    file.startUpload();
    });

    $("#stop").click(function () {
    file.cancelUpload();
    });

    });

    这是上传操作的代码:
    [HttpPost]
    public ActionResult Upload(FormCollection collection)
    {
    var packetSize = 4 * 1024 * 1024; // default to 4 MB
    var filePath = Server.MapPath("~/_temp_upload/");

    var result = UploadHelper.ProcessRequest(Request, filePath, packetSize);

    if (result != null)
    {
    var metadata = UploadHelper.GetMetadataInfo(filePath, result.Guid);
    // do anything with the metadata
    }

    if (result != null)
    return Json(result);
    return Content("");
    }

    关于asp.net - 超过 IIS 7.5 和 .NET 中的 2GB 文件上传限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738849/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com