Php 获取用于恢复文件上载的用户完整文件路径

Php 获取用于恢复文件上载的用户完整文件路径,php,javascript,html,file-upload,upload,Php,Javascript,Html,File Upload,Upload,这个问题可能没有答案,但我还是会问,因为我在谷歌找不到任何东西。 我有一个主要使用php和HTML5创建的文件上传网站。我知道,使用HTML5分块系统,我可以通过在服务器上检查已上传的分块来暂停和恢复文件上传。但它要求用户尝试上传同一个文件,以使其工作 现在,我想知道,在用户第一次尝试上传该文件时,是否存在获取用户完整文件路径的方法,以便我将该路径保存到数据库中。如果发生了什么事情,我可以告诉用户单击此处继续(因为我有文件路径,所以我可以自动提交,而不需要用户再次尝试浏览该文件) 我知道如果使用

这个问题可能没有答案,但我还是会问,因为我在谷歌找不到任何东西。 我有一个主要使用php和HTML5创建的文件上传网站。我知道,使用HTML5分块系统,我可以通过在服务器上检查已上传的分块来暂停和恢复文件上传。但它要求用户尝试上传同一个文件,以使其工作

现在,我想知道,在用户第一次尝试上传该文件时,是否存在获取用户完整文件路径的方法,以便我将该路径保存到数据库中。如果发生了什么事情,我可以告诉用户单击此处继续(因为我有文件路径,所以我可以自动提交,而不需要用户再次尝试浏览该文件)

我知道如果使用java我们能够做到这一点(使用签名证书),但无论如何,是否有更好的php、javascript或html5能够做到这一点。我试图避免使用java。或者其他语言

注意:这个文件上传是为了巨大的上传(从1MB到4GB文件),到目前为止,它工作得非常好。我只是想给这个项目添加暂停/恢复功能

我不介意购买受信任的证书或smtg来实现这一点

或者,有没有可能使用silverlight获取文件路径,然后在获得文件路径后,以html格式自动将其提交给我的php以处理暂停恢复功能


谢谢

您可以使用FileReader和某种本地存储来本地存储图像并从缓存上载。我在这里使用sessionStorage编写了一个类似问题的示例:


所以,您所要做的就是引用缓存的图像。

AFAIK,由于安全原因,除非用户亲自挑选文件,否则浏览器永远不会允许您上传文件。我的意思是,他们甚至不允许您以编程方式打开浏览窗口,用户需要单击
browse
按钮,否则表单中就不能有文件字段。但这都是HTML,一旦你接受了第三方插件的使用,比如java小程序、flash或silverlight,那就另当别论了。你可以用那种方式做任何你想做的事


但我认为这不是一个好方法,如果是我,我会做一些不同的事情。我会提示用户上传的文件不完整,只是按他们的名字,而不是他们的路径。为了检查上传的文件是新文件还是旧文件的简历,我会在实际发送文件之前在本地计算并发送到服务器。此外,您还需要将所有上传文件的签名存储在服务器中,以便将来进行比较。我不确定是否可以实现或者如何实现的部分是告诉浏览器从哪个区块开始上传文件

尝试提及文件夹的路径,并尝试在数据库中只输入文件名,因为它不会更改路径,也有助于上载

做这样的事

 D/abc/<?php $row['fieldname under which file is stored'];?>
D/abc/

现在,该文件在abc文件夹下的d驱动器中上载

您将无法获得带有JSjavascript的文件路径。JavaScript安全限制将阻止这种情况发生。允许服务器端代码指定要上载的客户端文件将允许恶意服务器尝试在客户端计算机上上载服务器知道其路径的任何文件。由于重新加载时文件句柄将被破坏,因此必须首先将文件数据存储在本地,小文件存储在本地,大文件存储在indexedDB。然后可以从缓存而不是从文件中恢复。@dandavis:Define“big one”。会话/本地/db存储的默认限制设置为5-30 MB。没有值得继续努力的文件适合于此。@SpliFF:indexedDB允许超过30MB。它的确切限制取决于chrome中的硬盘可用空间。我想说的是,这种需求更多地与带宽有关,而不是与存储空间有关。在标准调制解调器上上传一个5mb文件需要20分钟左右,当然这是一段您不想重复的时间,即使是一半时间……会话存储是否适合4gb文件?甚至不关闭。大多数浏览器将本地/会话存储限制在5MB左右(即兆字节,而不是千兆字节)。sqlLite/indexedDB的上限约为25MB。用户可以覆盖某些浏览器中的限制,但您不能假设他们会这样做。他们甚至不允许您以编程方式打开浏览窗口,实际上您可以通过触发单击事件来打开。您是对的。也许我以前的测试没有我想象的那么准确!谢谢你纠正我。
 D/abc/<?php $row['fieldname under which file is stored'];?>