我已经部分开发了一个混合 Android 应用程序,使用 node.js 为我的服务器和 javascript、jquery、phonegap(现在称为 cordova 1.6.0)为应用程序。
该应用程序的一部分允许用户使用智能手机相机拍照,然后将其上传到服务器。
我在上传图像的应用程序中的代码是......
var imageURI = document.getElementById('display_image').src;
if (!imageURI) { // || (self.elem.image_play.style.display == "none")) {
console.log('no image uri defined - ' + JSON.stringify(imageURI));
//document.getElementById('camera_status').innerHTML = "Take picture or select picture from library first.";
return;
}
// Verify server has been entered
server = 'http://192.168.1.3:8180/newimage/';
if (server) {
console.log("starting upload");
// Specify transfer options
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpg";
options.chunkedMode = false;
// Transfer picture to server
var ft = new FileTransfer();
ft.upload(imageURI, server, function(r) {
console.log("upload successful"+r.bytesSent+" bytes uploaded.");
//document.getElementById('camera_status').innerHTML = "Upload successful: "+r.bytesSent+" bytes uploaded.";
}, function(error) {
console.log("upload failed - Error Code = "+error.code);
//document.getElementById('camera_status').innerHTML = "Upload failed: Code = "+error.code;
}, options);
}
这很好用,但是我不知道如何处理 node.js 服务器上的图像。目前我的代码是:
'/newimage/': function(req,res){
var chunks;
req.addListener('data', function (chunk) {
console.log('in data processing');
chunks.push(chunk);
});
req.addListener('end', function () {
console.log('completing data processing');
fs.writeFile("out.jpg", chunks, function(err) {
console.log(err);
});
});
}
此服务器方法执行,但 console.log 行都不执行。
我已经尝试了 2 天来解决这个问题,我尝试了许多不同的方法,但我无法弄清楚如何处理来自 phonegap ft.upload 方法的传入图像文件。有人可以帮忙吗?
完成排序后,我的最终目标是将图像文件上传到亚马逊 s3 存储,我想我可以使用 knox 模块。