【发布时间】:2013-06-29 04:08:24
【问题描述】:
这个问题可能没有答案,但我还是会问,因为我在 Google 中找不到任何东西。 我有一个主要使用 php 和 HTML5 创建的文件上传站点。我知道,使用 HTML5 分块系统,我可以通过检查服务器已上传的块来进行某种暂停和恢复文件上传。但它要求用户尝试上传相同的文件才能正常工作。
现在,我想知道在用户第一次尝试上传该文件期间是否有获取用户完整文件路径,以便我将该路径保存到数据库中。如果发生了什么事,在网站上我可以告诉用户点击这里继续(然后因为我有文件路径,我可以自动提交,而不是要求用户再次尝试浏览该文件)。
我知道如果使用 java 我们能够做到这一点(使用签名证书),但无论如何使用更好的 php 或 javascript 或 html5 能够做到这一点。我试图避免java。或者也许任何其他语言?
注意:此文件上传适用于大量上传(从 1MB 到 4GB 的文件),到目前为止它工作得非常好。只是我正在尝试向该项目添加暂停/恢复功能。
我不介意为此购买受信任的证书或 smtg
或者无论如何,也许使用silverlight来获取文件路径,然后在我有了文件路径之后,以html形式自动提交它以便我的php处理暂停恢复功能
谢谢
【问题讨论】:
-
用JS获取不到文件路径
-
javascript 安全限制会阻止这样的事情发生。允许服务器端代码指定要上传的客户端文件将允许恶意服务器尝试在服务器知道路径的客户端计算机上上传 ANY 文件。
-
由于文件句柄在重新加载时会被破坏,因此您必须首先将文件数据存储在本地,localStorage 用于小文件,indexedDB 用于大文件。然后,您可以从缓存而不是从文件中恢复。
-
@dandavis:定义“大人物”。 session/local/db 存储的默认限制设置为 5-30 MB。任何值得努力恢复的文件都不适合。
-
@SpliFF:indexedDB 允许超过 30MB。它的确切限制取决于 chrome 中的硬盘可用空间。我会提供这种需求更多地与带宽有关,而不是存储空间。在标准调制解调器上上传一个 5mb 的文件大约需要 20 分钟,这当然是你不想重复的时间,即使是一半......
标签: php javascript html file-upload upload