【问题标题】:Uploading a large file (up to 100gb) through ASP.NET application通过 ASP.NET 应用程序上传大文件(最大 100gb)
【发布时间】:2015-07-19 02:20:09
【问题描述】:

我需要以某种方式实现通过在我们公司网络中运行的 ASP.NET 应用程序上传文件的功能。问题是这些文件变得越来越大。目前我们正在使用非常通用的异步上传,但问题是文件越来越大,每个文件的最大限制为 3.9gb 通过maxAllowedContentLength 设置,因为uint 的最大值不允许更多.用户应该上传的文件很快就会超过这个值,并且可能达到 100gb 的大小。

我尝试在网上寻找解决此问题的方法,但在大多数大文件文章中,人们最多指的是 1gb。

那么有没有办法通过 ASP.NET MVC\WebAPI 应用程序上传非常大的文件(最大 100g),或者我需要寻找替代解决方案?

【问题讨论】:

  • @Kamo 这实际上是 B 计划。问题是我们的用户必须在上传文件之前填写某个表格,并且教他们如何使用 FTP 会花费太多时间,所以我们有为此编写一个自定义 FTP 客户端。但在此之前,我想探索修改我们现有解决方案的所有可能性。
  • @user3223738 您可以通过 FTP 以编程方式发送文件吗?
  • @user3223738 你可以要求用户在填写表格后将他们的文件复制到共享文件夹吗?表格归档后可显示共享文件夹路径。
  • @Amitd 这也被讨论过,因为虽然我们在同一个 VLAN 中,但用户遍布全国(快餐连锁店),因此共享文件夹存在一些问题所以我们的网络管理员没有批准这个想法。
  • 我认为我正在考虑的替代方案是减小该文件的大小

标签: c# asp.net asp.net-mvc asp.net-web-api


【解决方案1】:

您可以考虑分块发送。这将跳过大文件要求(因为每个请求只是您发送的块的大小),但在客户端和服务器端稍微复杂一些。

我已经为通过 websocket 流式传输上传的文件做了类似的事情,但这可以通过多个 ajax 请求轻松完成。无论哪种情况,您都需要使用JavaScript File API 读取客户端计算机上的文件段,将该段编码为您可以发送的内容(可能是Base64),然后将该特定段发送到Web 服务器。您还可以发送其他数据,例如文件位置,以确保服务器正确写入文件。服务器可以选择如何响应(可以像“真”一样简单地确认收到),之后客户端 javascript 将读取并发送文件的下一个块。

我在github repo here (ASP.NET MVC server-side code here) 上有一个使用 WebSockets 的演示,但是通过一些调整,您可以轻松地将其变成连续的 AJAX 请求。

【讨论】:

    【解决方案2】:

    是的,您需要将文件拆分成更小的部分,请参阅此处的示例:http://forums.asp.net/t/1742612.aspx?How+to+upload+a+big+file+in+Mvc+

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-14
      • 2013-07-01
      • 2022-01-03
      • 2011-07-31
      • 2012-08-30
      • 2013-06-23
      • 2013-02-26
      • 2012-08-05
      相关资源
      最近更新 更多