web-applications - 在服务器端处理非常大的 http 上传和下载的最佳方法

标签 web-applications upload file-upload large-file-upload

我有一个即将进行的项目,我需要处理来自浏览器的非常大的上传(经典输入类型 ="file"或 Java Applet),并寻找在服务器上完成这项工作的最佳工具。

这些是我需要的东西:

  • 服务器内存消耗低
  • 能够将文件保存在服务器上的最终目的地(不复制文件)
  • 不会阻止网络服务器完成的其他重要任务
  • 良好处理高达 2 GB 的文件
  • 文件授权(将在应用程序中授予权限)

  • 我对使用什么技术仍有一定的余地,所以我想提供一些建议,以便能够在服务器上选择最佳技术来处理此任务:
  • ASP.NET ?
  • java ?
  • 亚马逊 S3 ?
  • 其他选择?

  • 我更习惯于 Microsoft Stack,但愿意在必要时进行更改:如上所述,我只是在寻找最适合这项工作的工具。

    谢谢 !

    更新 :
    服务器端是我对这个问题真正感兴趣的部分 ,而不是客户端。

    看起来这可能是微不足道的,但是当您开始深入研究时,您会看到 .NET 有 4 Mb 的限制,使用大量内存的下载,可以阻止其他线程(当您对线程数量有限制时,如果一个线程可以在互联网上上传/下载 2 Gb 文件的持续时间内执行:那么这不会很好地扩展,是吗?)等。

    最佳答案

    你需要:

  • 将文件分成小块的客户端代码(Java Applet、Silverlight 等)
  • 用于构建这些文件的服务器端代码(ASP.NET、Java 无关紧要)

  • 我刚刚完成了一个完全这样的申请;我会使用 Silverlight ( WebRequest async)、ASP.NET ( IHttpHandler/IHttpAsyncHandler ) 和 SQL Server 2005 ( UPDATETEXT/READTEXT ) 进行文件存储。

    更新 : 关于 ASP.NET 服务器端代码:

    ASP.NET 默认配置允许每个处理器有 100 个线程; IHttpAsyncHandler不会阻止您的进程,您可以在那里直接将文件内容写入 context.Response.OutputStream .

    对于上传,您还将发送多个数据块,但在多个 HTTP 连接中;虽然这可能会因 HTTP header 而带来一些过热,但在我的测试中效果很好。

    关于web-applications - 在服务器端处理非常大的 http 上传和下载的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1674846/

    相关文章:

    PHP:将图像从文件夹上传到MySQL数据库

    image - 如何使用 JSP -Servlet 和 EJB 3.0 上传图像

    Django:控制TemporaryUploadedFile生命周期的时间

    java - 在 maven 中准备 Ear 文件

    PHP文件上传状态

    javascript - 没有滚动 javascript 导致文本输入不起作用? iPhone 网络应用程序

    http - 右键单击建议文件名另存为

    c# - 使用更新面板来防止 RadUpload 控件的回发

    svn - 关于网页设计的版本控制最佳实践

    java - 我如何摆脱 : HTTP Status 405 - HTTP method GET is not supported by this URL?