【问题标题】:Upload big files in SPA (angular + express)在 SPA 中上传大文件(angular + express)
【发布时间】:2026-02-20 23:15:02
【问题描述】:

正常上传文件我做

<form method='post' enctype='multipart/form-data'>      
    <p><input type='text', name='name'/></p>            
    <p><input type='file', name='image'/></p>      
    <p><input type='submit', value='Wyślij'/></p>    
</form> 

如果我想在不重新加载页面的情况下发送此表单怎么办?

我可以使用“new FileReader()”并将 base64 绑定到 $scope,但是对于大文件,它不能正常工作。

我可以像上面类似的方式上传我的表单而不重新加载页面吗?

【问题讨论】:

    标签: angularjs express upload single-page-application


    【解决方案1】:

    我认为你应该看看已经创建的指令ng-file-upload

    特点

    1. 支持上传进度、取消/中止上传、文件拖放 (html5)、目录拖放 (webkit)、CORS、PUT(html5)/POST 方法。
    2. 使用 Flash polyfill FileAPI 跨浏览器上传文件(HTML5 和非 HTML5)。允许在上传文件之前进行客户端验证/修改
    3. 使用 $upload.http() 将文件内容类型直接上传到数据库服务 CouchDB、imgur 等。这将为 Angular http POST/PUT 请求启用进度事件。
    4. 单独的 shim 文件,FileAPI 文件按需加载非 HTML5 代码,这意味着如果您只需要 HTML5 支持,则无需额外加载/代码。
    5. 轻量级使用常规 $http 上传(对于非 HTML5 浏览器使用 shim),因此所有 angular $http 功能都可用。

    【讨论】:

    • 用大约 200MB 的文件测试了他们的演示页面,停滞在 0% 没有进展
    【解决方案2】:

    https://github.com/nervgh/angular-file-upload/ 似乎可以非常优雅地处理大型上传

    【讨论】: