2013-04-19 2 views
0

크롬에는 매우 유용한 파일 시스템 API가 있습니다. 내가 뭘 하려는지 그 안에 저장된 파일을 서버에 업로드하는 것입니다. 불행히도, 서버에 파일을 보낼 수있는 유일한 방법은 사용자가 보안 문제로 인해 업로드 할 파일을 명시 적으로 선택하는 양식을 제출하는 것입니다.Google 크롬 파일 시스템에서 서버로 파일 업로드

도움을 주시면 감사하겠습니다. 피터


그래서 나는이 아이디어를 가지고있다. 왜 blob을 FileReader를 사용하여 문자열로 변환 한 다음 요청 본문으로 보내면됩니까?

//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]); 
    } 
    } 
} 

문제는 이제 방울을 별도의 메시지로 보냅니다. 예를 들어 : 요청 URL : BLOB : HTTP %의 3A // localhost를/7492a164-ed62-4834-939c-e6437b52cba8 요청 방법 : 상태 코드를 GET : 200 OK (캐시)

+0

무엇이 질문입니까? 프로그래밍 방식으로 사용자의 (클라이언트) 파일 시스템에서 파일을 선택하고 사용자 개입없이 업로드 할 수 있는지 묻는다면 대답은 "아니오"입니다. –

+0

알 겠어.하지만 사실, Chrome의 File System (Google File System API)을 사용하고 있습니다. 나는 기본적으로 얼룩이 파일 개체가 있습니다. 그리고 나는 그들을 보낼 수 없습니다 – Peter

+0

각'Blob'을'FormData' 객체에'추가 '한 다음 XHR2를 통해'FormData' 객체를 보냅니다. –

답변

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); 
+0

나는 그것을 시도했다. 그러나 나는 나의 시스템에서 다른 크기의 서로 다른 파일을 가지고 있고 그것들을 MySQL 데이터베이스에 저장하려고 시도하고있다. PHP를 통해. 그들은 모두 18B의 공간을 차지하고 있습니다. 이상한. 각 파일을 $ _POST [ 'file'+ i]로 액세스 할 수 있습니까? – Peter

+0

저는 PHP에는 능숙하지 않지만, $ _FILES 전역을 사용하여 서버 측에서 파일을 가져와야한다고 생각합니다. –

+0

Nicholus에게 감사드립니다. 불행히도 $ _FILES 전역 변수는 비어 있습니다. 태그가 필요한 것과 관련이 있습니다. 내가 쓰고 싶지 않은 ... – Peter

관련 문제