保存图像从phonegap应用程序中的couchdb服务器获取

时间:2014-01-10 19:36:10

标签: javascript android cordova couchdb

我想在文件系统设备上保存图像。该图像来自couchdb服务器。 couchdb服务器的响应是MIME。 我解析MIME字符串,然后获取图像数据。这是代码:

function getImg(){
        $.ajax({
            url: "http://localhost:5984/testdb/10ef83b61f50e210cfe82620ef0016a3?attachments=true",
            success: function(data){
                var split = data.split("\r\n\r\n");
                var imageData = split[2].split("\r\n--")[0];
                var jsonData = split[1].split("\r\n--")[0];
                var jsonObj = JSON.parse(jsonData);

                //imageData is a string that contain image/jpeg read from MIME response
                window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem){

                fileSystem.root.getDirectory("PhoneGap Example", {create: true}, function(parent){

                    console.log("Directory create/open");
                    var d = new Date();
                    var n = d.getTime();
                    //new file name
                    var newFileName = n + ".jpeg";
                    fileSystem.root.getFile(newFileName, {create: true}, function(fileEntry){
                        console.log("create file image: " + fileEntry.name);

                        fileEntry.createWriter(function (writer){
                            writer.onwrite = function (evt){
                              largeImage.style.display = 'block';

                              // Show the captured photo
                              // The inline CSS rules are used to resize the image
                              //
                              largeImage.src = writer.fileName;
                            };

                            writer.write(imageData);
                        }, onWriterError);
                        fileEntry.moveTo(parent, newFileName, function(newFileEntry){
                            console.log("file move: " + newFileEntry.name);
                        }, onMoveFileError);
                    }, onResolveError);
                }, onGetDirectoryFail);
              }, onFileSystemError);
            }
        });
    }

文件已正确保存但文件内容不是图像。 我想因为我在文件中写的imageData是一个字符串而不是二进制数据。 我尝试用该函数转换二进制数据中的字符串:

function str2ab(str) {
      var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
      var bufView = new Uint16Array(buf);
      for (var i=0, strLen=str.length; i<strLen; i++) {
        bufView[i] = str.charCodeAt(i);
      }
      return buf;
}

但我也有同样的问题。 如何正确保存图像?

1 个答案:

答案 0 :(得分:0)

也许你的数据是base64编码的,你需要解码吗?

您还可以在Phonegap documentation上查看二进制写入的“二进制写快速示例”。