Javascript 如何在webOS上使用Node.js服务将图像二进制数据写入本地文件系统?

Javascript 如何在webOS上使用Node.js服务将图像二进制数据写入本地文件系统?,javascript,node.js,webos,mojo,enyo,Javascript,Node.js,Webos,Mojo,Enyo,我正在尝试使用Node.js将从EvernotegetResourceData-方法接收的图像数据写入本地系统的JavaScript代码中。图像文件已成功保存,但似乎已损坏,我无法打开它 函数getResourceData返回具有所提供GUID的资源的二进制数据。例如,如果这是一个图像资源,它将包含图像的原始位 十六进制原件: 下载的十六进制数: 代码如下: Client.js: var onSuccess = function(resource, transport) { self.s

我正在尝试使用Node.js将从Evernote
getResourceData
-方法接收的图像数据写入本地系统的JavaScript代码中。图像文件已成功保存,但似乎已损坏,我无法打开它

函数
getResourceData
返回具有所提供GUID的资源的二进制数据。例如,如果这是一个图像资源,它将包含图像的原始位

  • 十六进制原件:
  • 下载的十六进制数:
代码如下:

Client.js

var onSuccess = function(resource, transport) {
  self.showResourceData(resource);
  //console.log("Got Resource: "+resource);
};
NoteStore.getResourceData(onSuccess,this.showAlertMessage.bind(this, 
    "Failed to get Resource"), inSender.getValue());

showResourceData: function(resource) {
  //Calls WriteFileAssistant service
  this.$.writeFile.call({ path: "/downloads/logo1.png", content: resource });
}
WriteFileAssistant.prototype.run = function(future) {
  var filePath = this.controller.args.path;
  var content = this.controller.args.content;

  var downloadfile = fs.createWriteStream(filePath,
      {'flags': 'w', encoding: 'binary'});
  downloadfile.write(content, encoding='binary', function(err) {
    future.result = { path: filePath, bytes: content.length, error: err };
  });
}
writefleasistant.js

var onSuccess = function(resource, transport) {
  self.showResourceData(resource);
  //console.log("Got Resource: "+resource);
};
NoteStore.getResourceData(onSuccess,this.showAlertMessage.bind(this, 
    "Failed to get Resource"), inSender.getValue());

showResourceData: function(resource) {
  //Calls WriteFileAssistant service
  this.$.writeFile.call({ path: "/downloads/logo1.png", content: resource });
}
WriteFileAssistant.prototype.run = function(future) {
  var filePath = this.controller.args.path;
  var content = this.controller.args.content;

  var downloadfile = fs.createWriteStream(filePath,
      {'flags': 'w', encoding: 'binary'});
  downloadfile.write(content, encoding='binary', function(err) {
    future.result = { path: filePath, bytes: content.length, error: err };
  });
}
任何帮助都将不胜感激


-Petro

您似乎在
WriteFileAssistant.js
中使用命名参数来下载文件.write()。我认为这不是有效的JavaScript。另外,您可以通过使用@Morten Siebuhr稍微缩短代码,我还尝试使用fs.writeFile(),如下所示,而不是使用上面代码中的最后两行。但是,还是一样的结果。writeFile(filePath,content,encoding='binary',function(err){future.result={path:filePath,bytes:content.length,error:err};});很抱歉说得太多,但这个例子没有意义。正在设置的
此.controller.args.content
在哪里?这是什么。$.writeFile?这是为下载文件收集
内容的过程。写
很可能是问题所在,但您没有在这里包含任何该过程。@Kato,此代码是在Mojo/Enyo服务框架中编写的,WriteFileAssistant.js作为服务公开,
此。$。writeFile
调用WriteFileAssistant的run方法,在调用此服务时,我们设置了两个参数,
{path:“/downloads/logo1.png”,content:resource}
。。。这些参数在服务中访问,如下所示
var filePath=this.controller.args.path;var content=this.controller.args.content啊,这是有道理的;让我们添加几个标签,好吗?在故障排除方面,我仍然认为
内容的生成和写入流一样可能是罪魁祸首。您似乎在
writefleastant.js
中使用命名参数来
downloadfile.write()
。我认为这不是有效的JavaScript。另外,您可以通过使用@Morten Siebuhr稍微缩短代码,我还尝试使用fs.writeFile(),如下所示,而不是使用上面代码中的最后两行。但是,还是一样的结果。writeFile(filePath,content,encoding='binary',function(err){future.result={path:filePath,bytes:content.length,error:err};});很抱歉说得太多,但这个例子没有意义。正在设置的
此.controller.args.content
在哪里?这是什么。$.writeFile
?这是为下载文件收集
内容的过程。写
很可能是问题所在,但您没有在这里包含任何该过程。@Kato,此代码是在Mojo/Enyo服务框架中编写的,WriteFileAssistant.js作为服务公开,
此。$。writeFile
调用WriteFileAssistant的run方法,在调用此服务时,我们设置了两个参数,
{path:“/downloads/logo1.png”,content:resource}
。。。这些参数在服务中访问,如下所示
var filePath=this.controller.args.path;var content=this.controller.args.content啊,这是有道理的;让我们添加几个标签,好吗?在故障排除方面,我仍然认为
内容的生成和写入流一样可能是罪魁祸首。