gpt4 book ai didi

node.js - 用于处理来自phonegap ft.upload 的传入请求的node.js 服务器端代码是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:22 29 4
gpt4 key购买 nike

我已经部分开发了一个混合 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 行均不执行。

我已经尝试了两天来解决这个问题,并且尝试了很多不同的方法,但我不知道如何处理从phonegap ft.upload 方法传入的图像文件。有人可以帮忙吗?

一旦我完成了这个排序,我的最终目标是将图像文件上传到亚马逊 s3 存储,我想我可以使用 knox 模块。

最佳答案

我正在使用node formidable和fs模块将上传的图像写入nodejs服务器上的/tmp文件夹,以便稍后进行OCR。代码基于 www.nodebeginner.org 中的图像上传示例书。

我在phonegap项目中的uploadPicture()方法中的JS代码:

 // Specify transfer options
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg"
options.chunkedMode = false;

// Transfer picture to server
var ft = new FileTransfer();
ft.upload(imageURI, server, function(r) {
document.getElementById('camera_status').innerHTML = "Upload successful: "+r.bytesSent+" bytes uploaded.";
}, function(error) {
document.getElementById('camera_status').innerHTML = "Upload failed: Code = "+error.code;
}, options, true);

我在 Node 服务器上的 requesthandler.js 中的代码:

function upload(response, request) {
console.log("Request handler 'upload' was called.");
var form = new formidable.IncomingForm();
form.parse(request, function(error, fields, files) {

//logs the file information
console.log(JSON.stringify(files))

fs.rename(files.file.path, "/tmp/test.png", function(err) {
if (err) {
fs.unlink("/tmp/test.png");
fs.rename(files.file.path, "/tmp/test.png");
}
});
response.writeHead(200, {"Content-Type": "text/html"});
response.write("received image:<br/>");
response.write("<img src='/show' />");
response.end();
});
}

关于node.js - 用于处理来自phonegap ft.upload 的传入请求的node.js 服务器端代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474415/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com