2014-02-16 4 views
1

바이너리 데이터 (이미지)로 base64 인코딩 된 변수가 있는데 TideSDK를 사용하여 저장하려고하는데 없이 PHP (그냥 JS)이 저장됩니다. Ti.Filesystem.getFileStream() + .open() + .write()는이 경우 작동하지 않으며 작동하는 예제를 찾지 못했습니다.TideSDK에 이진 파일 쓰기.

답변

0

이것은 전혀 가능하지 않습니다. 코드를 검토하고 onyl "string"을 파일에 저장할 수 있습니다. 당신은 당신의 index.html을

<script type="text/php"> 
// required for the TideSDK file storage 
// normal HTML5 browser ignores this part of code because the type is set to PHP. 
// TideSDK with PHP binding run this code 
// 
function tideSDK_writeBase64AsBinaryData($fileName, $base64){ 
    $binary=base64_decode($base64); 
    $file = fopen($fileName, "w"); 
    fwrite($file, $binary); 
    fclose($file); 
} 
</script> 

이 코드가 "정상"HTML 또는 JS 물건 손상되지 않았다이 PHP 함수를 추가 할 수 있습니다

(나는 OSX에 대한 코드를 확인). 일반 브라우저는 이것을 무시합니다. 내 JS 코드에서

나는 이진 데이터

saveFile: function(fileName, content, contentIsBase64, successCallback, errorCallback) { 
    try{ 

     if(contentIsBase64){ 
      tideSDK_writeBase64AsBinaryData(fileName, content); 
     } 
     else{ 
      //Doesn't have to exist yet. 
      var fileHandle = Ti.Filesystem.getFile(fileName); 
      var stream = Ti.Filesystem.getFileStream(fileHandle); 
      stream.open(Ti.Filesystem.MODE_WRITE,false); 
      stream.write(content); 
      stream.close(); 
     } 

     successCallback({title: fileName}); 
    } 
    catch(e){ 
     errorCallback(); 
    } 
}, 

나는 "Draw2D 터치 디자이너 '프로젝트의 바탕 화면 버전이 사용하고 잘 작동을 저장하는 그런 논리를 가지고있다.

인사말

완전히 거짓 뭐라고 안드레아스

0

안드레아스. 방법이 있습니다!

난 당신이 base64로 파일을 인코딩하고 당신이 필요로하는 문자열을 얻을하는 데 도움이 기능을 썼습니다 : (크레딧을 잊지 마세요;))

function encodeFileto64(path){ 
    var f = path; 
    var file = Ti.Filesystem.getFile(f); 
    var stream = file.open(Ti.Filesystem.MODE_READ); 
    var obj = stream.read(); 
    var base = Ti.Codec.encodeBase64(obj); 
    base = base.replace(/[\n\r]/g, ''); 
    return base; 
}; 

이 견과류하지 않고 모든 트릭을 수행을 .. .