首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Node.js将图像从安卓发送到AsyncHttpClient

问使用Node.js将图像从安卓发送到AsyncHttpClient
EN

Stack Overflow用户
提问于 2015-05-28 06:48:53
回答 2查看 1.4K关注 0票数 0

我想把图像从安卓应用程序发送到node.js服务器,以保存到服务器端的MongoDB。我使用AsyncHttpClient发布请求。

我的代码是这样的:

Android ->

代码语言:javascript
复制
RequestParams param = new RequestParams();
param.put("email", email);
param.put("image", file, "image/jpg");

System.out.println("Param : " + param);
HttpClient.post("uploadImg_Profile/", param, new AsyncHttpResponseHandler() {

Node.js ->

代码语言:javascript
复制
app.js->
app.post('/uploadImg_Profile/', function(req, res){
    uploadImg_Profile.uploadImg_Profile(req, res);
})

uploadImg_Profile.js->

exports.uploadImg_Profile= function(req, res){
    var User = new user({ 
        email : req.body.email,
        img : req.body.image
    });
    //
    console.log("req : " + req);

    console.log("email : "+ User.email);
    console.log("image : " + User.img);

但是console.log结果是未知的。我尊重这是看到jhgdsfejdi734634jdhfdf像这样的BSON类型的结果。

  1. 如何获得img数据?
  2. 有一种方法可以从File对象动态获取文件的类型吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-28 08:51:08

您需要在node.js代码中使用正确类型的正文解析器--从所获得的结果来看,您似乎没有将其解释为多部分形式。

您需要注册用于解释POST的中间件,例如,使用穆特解析器:

app.js:

代码语言:javascript
复制
var multer = require('multer');

app.use(bodyparser.json());
app.use(multer({ inMemory: true, putSingleFilesInArray: true }));

app.post('/uploadImg_Profile/', function(req, res){
    uploadImg_Profile.uploadImg_Profile(req, res);
});

uploadImg_Profile.js:

代码语言:javascript
复制
exports.uploadImg_Profile= function(req, res){
    var User = new user({ 
        email : req.body.email,
        img : req.files['image'][0].buffer
    });

    console.log("req : " + req);

    console.log("email : "+ User.email);
    console.log("image : " + User.img);
}

Multer还将填充有关该文件的其他各种属性,因此您应该能够使用以下方法从该文件检索图像的类型:

代码语言:javascript
复制
req.files['image'][0].mimetype

请看github上的multer页面的所有优点。

编辑:添加了bodyparser.json以及穆特。

票数 0
EN

Stack Overflow用户

发布于 2015-05-29 04:32:26

这个问题解决了。可以同时使用app.use( both解析器)和app.use(multer)。

app.use(bodyparser.json()) app.use(multer())

就像这样。

我以前的问题是另外一点。我不知道到底是怎么回事。我只需将速成版本从3.x改为4.x,并测试各种情况。在此过程中,我发现req具有适当的图像缓冲区,并且可以获得缓冲区数据。

谢谢马克和你们都在我的问题上插话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30499133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档