2014-02-16 128 views
1

我有base64编码的变量与二进制数据(图像),我试图使用TideSDK保存它,但没有PHP(只是JS)。 Ti.Filesystem.getFileStream()+ .open()+ .write()在这种情况下不起作用,并且我没有找到任何工作示例。在TideSDK中写入二进制文件

回答

0

这是不可能的。我检查代码和onyl“字符串”可以保存到一个文件。 (我查OSX代码)

可以将此PHP函数添加到您的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的东西。普通浏览器忽略此。

在我的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; 
}; 

这确实所有的伎俩没有去坚果.. 。