更新chrome 33后,上传具有子文件夹的文件夹不起作用

时间:2014-02-24 13:02:25

标签: php html5 google-chrome file-upload upload

<form action="a.php" method="post" enctype="multipart/form-data">
    <input type="file" name="files[]" id="files" multiple="" directory="" webkitdirectory="" mozdirectory="">
    <input class="button" type="submit" value="Upload" />
</form>

http://www.w3bees.com/2013/03/directory-upload-using-html-5-and-php.html

上述方法适用于在最近更新chrome之前上传包含一个或多个子文件夹的文件夹。但是,chrome现在显示“此网页不可用,...... a.php的网页可能暂时关闭,或者它可能已永久移动到新的网址。错误代码:ERR_ACCESS_DENIED”如果我上传包含的文件夹一个子文件夹。如果所选文件夹不包含子文件夹,它可以正常工作。

有人对此有所了解吗? 感谢

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。问题是浏览器尝试访问子文件夹本身。因此,您必须使用一些“预上传”功能将它们从发送数据中排除,并使用XMLHttpRequest手动上传文件。

这是可行的解决方案。您需要在示例中的index.php文件的<script>标记内添加此<head>标记。

<script>
window.onload = function(){
    document.getElementById('submit_button').onclick = function(e) {
        var files = document.getElementById('files').files;
        uploadFiles(files);
        return false;
    }
}


function uploadFiles(files){

    var xhr = new XMLHttpRequest();
    var data = new FormData();

    // go through files
    for (var i in files){
        if( files[i].webkitRelativePath && files[i].type){
            data.append(i, files[i]);
        }
    };

    xhr.open('POST', "index.php", true);
    xhr.send(data);

}
</script>

还需要将id="submit_button"添加到提交按钮。当然,你必须改变你的PHP代码才能正确处理新数据。