将多部分表单从android上传到vert.x
我正在尝试将带有其他参数的图像从Android上传到Vertex HttpServer。我想将参数存储到MySQL数据库中,并将图像写入文件。 我遇到的问题是,服务器只能完全接收第一个请求的映像字节。服务器只能部分接收以下请求的映像字节。所以我只能将部分图像上传到服务器。有人能帮我吗?谢谢 android中的代码如下所示:将多部分表单从android上传到vert.x,android,vert.x,Android,Vert.x,我正在尝试将带有其他参数的图像从Android上传到Vertex HttpServer。我想将参数存储到MySQL数据库中,并将图像写入文件。 我遇到的问题是,服务器只能完全接收第一个请求的映像字节。服务器只能部分接收以下请求的映像字节。所以我只能将部分图像上传到服务器。有人能帮我吗?谢谢 android中的代码如下所示: protected String doInBackground(String... params) { Uri.Builder builder =
protected String doInBackground(String... params) {
Uri.Builder builder = Uri.parse(params[0]).buildUpon();
for (String name : LoginMap.keySet()) {
builder.appendQueryParameter(name, LoginMap.get(name).toString());
}
String url = builder.build().toString();
httpPost = new HttpPost(url);
MultipartEntity mpEntity = new MultipartEntity();
Log.i("filename", fileName);
ContentBody mimePart = new ByteArrayBody(fileBytes, fileName);
mpEntity.addPart("userfile", mimePart);
httpPost.setEntity(mpEntity);
String result = "";
HttpResponse httpResponse = null;
try {
httpResponse = httpClient.execute(httpPost);
InputStream inputStream = httpResponse.getEntity().getContent();
if (inputStream != null) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while ((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
Log.i("test",result);
}
} catch (Exception e) {
Log.d("InputStream", e.getLocalizedMessage());
}
return result;
}
服务器端的代码是:
else if (req.path().startsWith("/upload")) {
req.expectMultiPart(true);
// can put the pic name in url
JsonArray fields = new JsonArray();
JsonArray values = new JsonArray();
String[] pairs = req.query().split("&");
String[] each;
for (String pair : pairs) {
each = pair.split("=");
fields.addString(each[0]);
// if(each[0].equals("pic_uri")){
// String[] pic = each[1].replace("%2F",
// "/").split("/");
// values.addString(pic[pic.length-1]);
// }
// else
values.addString(each[1].replace("+", " ").replace("%20", " ").replace("%2F", "/"));
}
eb.send("io.vertx~mod-mysql-postgresql",
getInsertQuery("records", fields, values),
new Handler<Message<JsonObject>>() {
@Override
public void handle(Message<JsonObject> message) {
System.out.println(message.body().toString());// debugging
if (message.body().getString("status").equals("ok")) {
req.response().putHeader( "content-type", "text/plain");
req.response().end(STATUS_OK);
req.response().close();
} else {
req.response().putHeader("content-type", "text/plain");
req.response().end("ERROR");
req.response().close();
}
}
});
final Buffer body = new Buffer(0);
System.out.println("ADDR : " + req.remoteAddress());
req.dataHandler(new Handler<Buffer>() {
public void handle(Buffer buffer) {
System.out.println("I received " + buffer.length() + " bytes");
System.out.println("DATA");
body.appendBuffer(buffer);
}
});
req.uploadHandler(new Handler<HttpServerFileUpload>() {
public void handle(HttpServerFileUpload upload) {
String name = upload.filename();
upload.streamToFileSystem("uploads/" + name);
System.out.println("uploads/" + name);
}
});
}