2014-09-22 2 views
3

phonegap 카메라 플러그인의 최신 버전 (예 : 0.2.9)과 phonegap 3.5를 사용하고 있습니다. Android에서 테스트하고 빌드하는 것은 이미지를 가져 오는 코드입니다. :안드로이드에서 이미지 파일 이름이 공백 인 경우 getgamePicture 메서드가 실패합니다.

navigator.camera.getPicture(uploadPhoto, 
     function(message) { console.log('get picture failed');alert(message) }, 
         { quality: 50, targetWidth: 400, targetHeight: 400, 
          destinationType: navigator.camera.DestinationType.FILE_URI, 
          sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY } 
); 

나 공백없이 파일명 (예 test.jpg를)는 상기 uploadPhoto 방법이 성공적이라고 화상을 선택하지만 때 이미지를 선택할 때 여기서 공간의 파일명 (시험 2.JPG) "비트 맵을 만들 수 없습니다"라는 경고 메시지와 함께 오류가 발생합니다.

+0

나는 공간이 URL 표준 사양에 따라 허용되지 않기 때문에 당신이 **에서는 URLEncode ** 당신의 이름이이 일을 할 필요가 있다고 생각합니다. – frank

+0

하지만 인코딩 할 부분은 무엇입니까? 내가 시도 destinationType : encodeURI (navigator.camera.DestinationType.FILE_URI), 아직 작동하지 @ frank –

+0

당신은 파일 이름 (공백을 포함하는 문자열)을 인코딩해야합니다. – frank

답변

0

나는 동일한 문제가 있습니다. 내 솔루션은 최신 버전 (5.1.1)에 대한 업데이트 버전입니다.

0

JavaScript 인코딩 코드 ()를 사용하여 경로를 인코딩합니다.

이렇게하면 파일 경로가 표준 사양에 따라 허용됩니다. 여전히 파일 이름에 나타나는 '('및 ')'은 함수에 의해 처리되지 않습니다.

그러나 encodeURI 함수를 2 JavaScript 문자열 replace() 메서드으로 바꾸면 RAW URL로 이에 상응하는 인코딩으로 바꿀 수 있습니다.

var success = function(path) { 
 
    var urlEncodedPath = encodeURI(path) 
 
    .replace('(', '%28') 
 
    .replace(')', '%29'); 
 
    document.getElementById("demo").innerHTML = urlEncodedPath; 
 
    // do something 
 
}; 
 

 
// Actual success callback from cordova camera 
 
// navigator.camera.getPicture(success, fail, options); 
 

 
// An Example for demonstating in browser 
 
success('file:///storage/emulated/0/Android/data/com.your.app/cache/hd wallpaper nature(1).jpg');
<p id="demo" style="word-wrap: break-word;"></p>

관련 문제