2013-09-04 2 views
4

내가 모바일 장치에 디렉토리를 만들 내 폰갭 응용 프로그램을 얻기 위해 노력하고있어,하지만 난이 혼합되어 같은 오류로 실행 계속 :폰갭 파일 전송 오류

ENCODING_ERR - 5 -의 URL을 형식이 잘못되었습니다. URL이 완전하고 유효한지 확인하십시오.

PATH_EXISTS_ERR - 12 - 경로가 같은 파일 또는 디렉토리가 이미 있습니다.

INVALID_MODIFICATION_ERR - 9 - 요청 된 수정이 허용되지 않습니다. 예를 들어, 앱이 디렉토리를 자체 하위 디렉토리로 이동하거나 이름을 변경하지 않고 파일을 상위 디렉토리로 이동하려고 할 수 있습니다.

$(document).on('click', '#A2', function() { 
    downloadPhoto(); 
}); 

function downloadPhoto() { 
     alert("Downloading"); 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function systemSuccess(dirEntry) { 
      alert("Download about to begin"); 
      dirEntry.root.getDirectory('thisfilenamewillneverexist', { create: true }, function (fileSystem ) { 
       alert(fileSystem); 
      }, errorHandler); 
     }, errorHandler); 
    } 

function errorHandler(e) { 
    var msg = ''; 
    switch (e.code) { 
     case FileError.ENCODING_ERR: 
      msg = 'ENCODING_ERR'; 
      break; 
     case FileError.INVALID_MODIFICATION_ERR: 
      msg = 'INVALID_MODIFICATION_ERR'; 
      break; 
     case FileError.INVALID_STATE_ERR: 
      msg = 'INVALID_STATE_ERR'; 
      break; 
     case FileError.NO_MODIFICATION_ALLOWED_ERR: 
      msg = 'NO_MODIFICATION_ALLOWED_ERR'; 
      break; 
     case FileError.NOT_FOUND_ERR: 
      msg = 'NOT_FOUND_ERR'; 
      break; 
     case FileError.NOT_READABLE_ERR: 
      msg = 'NOT_READABLE_ERR'; 
      break; 
     case FileError.PATH_EXISTS_ERR: 
      msg = 'PATH_EXISTS_ERR'; 
      break; 
     case FileError.QUOTA_EXCEEDED_ERR: 
      msg = 'QUOTA_EXCEEDED_ERR'; 
      break; 
     case FileError.SECURITY_ERR: 
      msg = 'SECURITY_ERR'; 
      break; 
     case FileError.TYPE_MISMATCH_ERR: 
      msg = 'TYPE_MISMATCH_ERR'; 
      break; 
     default: 
      msg = 'Unknown Error'; 
      break; 
    }; 
    alert('Error: ' + msg); 
} 

파일 이름을 처음 만들 때 왜 이미 또는 이미 존재합니까?

답변

5

오류를 수정하여 관리하면 새로 만든 디렉토리에 파일을 만들 때 "루트"를 포함 할 필요가 없습니다. 누구를위한

코드가 다른이 문제 또는 비슷한에 붙어 :

var folderDir; 
var fileDir; 
var FolderName = "OSMaps"; 

$(document).on('click', '#A2', function() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, downloadPhoto, errorHandler); 
}); 

function downloadPhoto(fileSystem) { 
    fileSystem.root.getDirectory(FolderName, { create: true, exclusive: false }, 
    function (dirEntry) { 
     folderDir = dirEntry; 
->  folderDir.getFile('test.jpg', { create: true, exclusive: false }, <- 
     function (fileEntry) { 
       fileDir = fileEntry; 
     }, errorHandler); 
}, errorHandler); 
+0

이것을 구현 한 후에도 여전히 문제가 발생하는 경우, 존재하지 않는 하위 폴더에서 파일을 다운로드하려고 했으므로 코드가 작동하지 않습니다. 파일을 다운로드하기 전에 먼저 (하위) 폴더를 만들어야 할 수도 있습니다. – Sayed

1
당신은 간단한 측면에서 어머니입니다 " fileSystem"매개 변수를 전달됩니다 requestFileSystem의 successcallback에서

(주 객체/학부모) 파일 API의. 당신이 경우에

"fileSystem.root.getDirectory는"는 successcallback에 당신은 그러므로 당신이 all the methods listed under directoryEntry 바로 액세스 할 수 있습니다 기본적으로 "fileSystem.root"의 동일 "하여 DirectoryEntry"의 매개 변수를 전달합니다 떨어져서 사용하고 루트를 사용할 필요가 없습니다.