使用express和multer将带有Java MultipartEntity的映像上传到Node.js服务器

使用express和multer将带有Java MultipartEntity的映像上传到Node.js服务器,第1张

概述我正在尝试使用自定义MultipartEntity从Android应用程序上传图像,该自定义MultipartEntity也会更新ProgressDialog(这也是我使用已弃用的MultipartEntity的原因).相关的Java代码:Filefile=newFile(imgPath);HttpPostpost=newHttpPost("http://"+SERV

我正在尝试使用自定义multipartentity从Android应用程序上传图像,该自定义multipartentity也会更新ProgressDialog(这也是我使用已弃用的multipartentity的原因).
相关的Java代码:

        file file = new file(imgPath);        httpPost post = new httpPost("http://" + SERVER + "/upload");        multipartentity entity = new Mymultipartentity(new Mymultipartentity.ProgressListener()        {            public voID transferred(long num)            {                publishProgress((int) ((num / (float) totalSize) * 100));                Log.d("DEBUG", num + " - " + totalSize);            }        });        Contentbody cbfile = new fileBody(file, "image/jpeg");        entity.addPart("source", cbfile);        totalSize = entity.getContentLength();        post.setEntity(entity);        httpResponse response = clIEnt.execute(post);        int statusCode = response.getStatusline().getStatusCode();        if(statusCode == httpStatus.SC_OK){            String fullRes = EntityUtils.toString(response.getEntity());            Log.d("DEBUG", fullRes);        } else {            Log.d("DEBUG", "http Fail, Response Code: " + statusCode);        }

Node.Js服务器文件:

var fs = require('fs');var express = require('express');var app = express();var multer = require('multer');var upload = multer(    {         limits: {            fIEldnameSize: 999999999,            fIEldSize: 999999999        },        dest: 'uploads/' }    );app.get('/', function(req, res){    res.send(        '<form action="/upload" method="post" enctype="multipart/form-data">'+        '<input type="file" name="source">'+        '<input type="submit" value="Upload">'+        '</form>'    );});app.post('/upload', upload.any(), function(req, res){    console.log(req.files);    var tmp_path = req.files[0].path;    var target_path = 'uploads/' + req.files[0].originalname;    var src = fs.createReadStream(tmp_path);    var dest = fs.createWriteStream(target_path);    src.pipe(dest);    src.on('end', function() { res.send("ok"); });    src.on('error', function(err) { res.send({error: "upload Failed"}); });});app.get('/info', function(req, res){    console.log(__dirname);    res.send("image upload server: post /upload");});app.Listen(8080);console.log('started server on localhost...');

我也尝试使用upload.single()方法(通过表单工作),但这需要字段的名称,我不知道如何/如果我可以添加到Java多部分实体对象.

我目前得到的是请求上的空文件数组和请求体上的源变量,其中包含看起来像图像的原始数据,所以基本上看起来multer根本没有做任何事情.我错过了什么?

谢谢!

解决方法:

我最终使用了AndroID Ion库 – https://github.com/koush/ion

Java代码:

Ion.with(context)            .load("http://" + SERVER + ":8080/upload")            .progressDialog(pd)            .setMultipartParameter("name", "source")            .setmultipartfile("image", "image/jpeg", new file(imgPath))            .asJsonObject()            .setCallback(new FutureCallback<JsonObject>() {                @OverrIDe                public voID onCompleted(Exception e, JsonObject result) {                    //do stuff with result                }            });

服务器代码保持不变.

总结

以上是内存溢出为你收集整理的使用express和multer将带有Java MultipartEntity的映像传到Node.js服务器全部内容,希望文章能够帮你解决使用express和multer将带有Java MultipartEntity的映像上传到Node.js服务器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1108320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存