将文件从Google Chrome文件系统上传到服务器

时间:2013-04-19 08:25:18

标签: php javascript file-upload filesystems

Chrome有一个非常有用的文件系统API,我正在使用它。我想要做的是将存储在其中的文件上传到服务器。不幸的是,似乎可以将文件发送到服务器的唯一方法是提交一个表单,其中由于某些安全问题,用户明确选择要上载的文件。

非常感谢任何帮助。

彼得


所以我有这个想法。为什么不使用FileReader将blob转换为字符串,然后将其发送到请求正文中?

//entries[] contains a set of file objects
function readerSuccess(entries) {
   var i;
   for (i=0; i<entries.length; i++) 
   {
       if(entries[i].isFile === true)
       {
        data=new FormData();
    data.append('name',entries[i].fullPath);

    //Conversion...
    entries[i].file(function(file) {
            var reader = new FileReader();

            reader.onloadend = function(e) {
            var dataStr=this.result;

            };

        reader.readAsText(file);
     }, errorHandler);

   //Sending...
 data.append('file',dataStr);
 var oReq = new XMLHttpRequest();
 oReq.open("POST", "serv.php", true);
 oReq.send(data);


    }
    else if (entries[i].isDirectory === true)
    {
    getDirSuccess(entries[i]);
    }
  }
 }

问题是现在它将blob作为单独的消息发送。 例如: 请求网址:blob:http%3A // localhost / 7492a164-ed62-4834-939c-e6437b52cba8 请求方法:GET 状态代码:200 OK(来自缓存)

1 个答案:

答案 0 :(得分:0)

我不完全确定你在这里使用FileReader的原因。只需将每个Blob / File附加到FormData对象并发送它:

var data = new FormData();
if(entries[i].isFile)
{
   data.append('file' + i , entries[i]);
}

var oReq = new XMLHttpRequest();
oReq.open("POST", "serv.php", true);
oReq.send(data);