2014-02-16 4 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 сенсорного конструктор» и он работает хорошо.

Привет

Andreas

0

Andreas, что вы говорите, совершенно неверно. Есть выход!

Я написал эту функцию, которая помогает вам кодировать файлы в 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; 
}; 

Это делает все трюк без свихнулся .. .

Смежные вопросы