V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Insomnia
V2EX  ›  问与答

用网页上传大文件,有什么比较好的方案吗?

  •  
  •   Insomnia · 2014-07-21 17:24:28 +08:00 · 3326 次点击
    这是一个创建于 3783 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用网页上传大文件(比如 1G 左右的),不在网页上安装插件之类的,直接用网页打开上传,然后前端和后端有什么比较成熟靠谱的解决方案吗?
    10 条回复    2014-07-21 20:47:49 +08:00
    dant
        1
    dant  
       2014-07-21 17:27:53 +08:00   ❤️ 1
    用FileSystem API,分块POST/WebSocket上传
    Insomnia
        2
    Insomnia  
    OP
       2014-07-21 17:38:13 +08:00
    dant
        3
    dant  
       2014-07-21 17:48:57 +08:00
    @Insomnia 补充:
    WebSocket对后端的要求比较高。
    分块上传也是对付后端的POST大小限制并实现断点续传(非精确续传)。
    至于POST,要用新的(HTML5标准的)XMLHttpRequest。
    如果后端没有限制并且网络比较稳定,直接整个文件POST上去就行。
    em70
        4
    em70  
       2014-07-21 18:10:47 +08:00
    浏览器这种环境,不适合长期稳定工作啊,万一有个插件或者其他页面的问题导致整个浏览器崩溃呢,单纯功能上来说完全满足,但你不能靠一个应用去保证浏览器环境稳定.
    Insomnia
        5
    Insomnia  
    OP
       2014-07-21 19:21:09 +08:00
    @dant 我刚搜索研究,看到有人说用 ajax 上传切片,然后 server 端将这些切片再合并成文件。。


    @em70 嗯,是这么回事。但是如果不是针对很多用户,而是针对部分指定的人来用的话,应该还是可以的。
    em70
        6
    em70  
       2014-07-21 19:39:53 +08:00
    @Insomnia 针对指定用户就客户端啊,主要是你用网页上传1G文件遇到啥问题了,不稳定用浏览器解决不了
    Insomnia
        7
    Insomnia  
    OP
       2014-07-21 19:50:28 +08:00
    @em70 还有一个问题就是我们没有些客户端的人才,基本上都是做 web 的,所以开始考虑的时候就想从 web 层面解决这个问题。
    em70
        8
    em70  
       2014-07-21 20:27:04 +08:00   ❤️ 1
    @Insomnia 支持断点续传就行了,其他不知道你们还遇到什么难题,有专门公司做这个服务,买一个就解决了
    http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html
    kmvan
        9
    kmvan  
       2014-07-21 20:39:25 +08:00 via Android
    html5 ?1g直接卡死
    Automan
        10
    Automan  
       2014-07-21 20:47:49 +08:00
    @em70 不支持 mac/linux, 控件还不如flash
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.