获取用户完整文件路径以恢复文件上载

时间:2013-07-01 22:19:22

标签: php javascript html5 file-upload upload

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

现在,我想知道无论如何,在第一次用户尝试上传该文件时,获取用户的完整文件路径,以便将该路径保存到数据库中。如果发生了什么事情,在网站上我可以告诉用户点击这里继续(然后因为我有文件路径,我可以自动提交,而不是要求用户再次尝试浏览该文件)。

我知道如果使用java我们能够做到这一点(使用签名证书),但无论如何使用优选的php或javascript或html5就可以做到这一点。我正在努力避免使用java。或者也许是其他语言?

注意:此文件上传用于大量上传(范围从1MB到4GB文件),到目前为止它完全正常。我只是想在这个项目中添加暂停/恢复功能。

我不介意购买可靠的证书或smtg,以便工作

或者无论如何,也许是使用silverlight获取文件路径,然后在我有文件路径后,以html格式自动提交它以便我的php处理暂停恢复功能

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用FileReader和某种本地存储在本地存储图像并从缓存中上传。我在这里使用sessionStorage写了一个类似问题的例子:Get complete filepath for cached images

var input = document.querySelector("#imageInput");
input.addEventListener("change", function(e){
    var reader = new FileReader();
    reader.onload = function(evt){
        var newImage = document.createElement("img");
        newImage.src = evt.target.result;
        document.querySelector("body").appendChild(newImage);
        sessionStorage.setItem("image", evt.target.result);
    };
    reader.readAsDataURL(e.target.files[0]);
}, false);

window.addEventListener("load", function(e){
    if(sessionStorage.getItem("image")){
        var newImage = document.createElement("img");
        newImage.src = sessionStorage.getItem("image");
        document.querySelector("body").appendChild(newImage);
    }
}, false);

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

答案 1 :(得分:1)

AFAIK,出于安全原因,浏览器永远不会让您上传文件,除非用户亲自亲自挑选。 我的意思是他们甚至不会让你以编程方式打开浏览窗口,用户需要点击browse按钮,否则你的表单中没有文件字段。但这都是HTML,一旦你接受使用第三方插件,如java applets,flash或silverlight,那么这是另一个故事。你可以做任何你想做的事。

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

答案 2 :(得分:-2)

尝试提及该文件夹的路径,并尝试仅输入数据库中文件的名称,因为它不会更改路径,也有助于上传。

做这样的事情

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

现在文件在abc文件夹下的d盘中上传