
我正在尝试使用自定义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服务器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)