如何使用android volley库将位图图像上传到服务器?

时间:2013-11-14 14:53:00

标签: android bitmap bitmapimage android-networking android-volley

如何使用android volley库将位图图像上传到服务器?我正在尝试使用android volley将图像上传到服务器。如果android volley中没有这样的选项,请你建议我更快地建立网络动作的最佳方法。 欢迎您向我发送任何有关此主题的在线教程的链接

3 个答案:

答案 0 :(得分:3)

据我所知,Volley不是将大量数据(如图像)发送到远程服务器的正确选择。无论如何,如果你想发送一个图像,你应该扩展Request类并实现你的逻辑。 您可以将工具箱包中已有的一些类作为示例。 否则,您可以使用HttpURLConnection并实现您的逻辑,首先您必须设置:

con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);

其中boundary是你喜欢的字符串。 然后你必须从连接中获取输出流并开始编写你的部件。

public void addFilePart(String paramName, String fileName, byte[] data) throws Exception {
  os.write( (delimiter + boundary + "\r\n").getBytes());
  os.write( ("Content-Disposition: form-data; name=\"" + paramName +  "\";    filename=\"" + fileName + "\"\r\n"  ).getBytes());
  os.write( ("Content-Type: application/octet-stream\r\n"  ).getBytes());
  os.write( ("Content-Transfer-Encoding: binary\r\n"  ).getBytes());
  os.write("\r\n".getBytes());

  os.write(data);

  os.write("\r\n".getBytes());
}

等等。 我写了一个关于它的教程(因为你要问一个链接)。你可以看看here

如果您不喜欢HttpUrlConnection,您可以更轻松地使用Apache Http客户端。

HttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 

然后:

MultipartEntity multiPart = new MultipartEntity();
multiPart.addPart("param1", new StringBody(param1)); 
multiPart.addPart("param2", new StringBody(param2)); 
multiPart.addPart("file", new ByteArrayBody(baos.toByteArray(), "logo.png")); // Your image

希望它可以帮到你!

答案 1 :(得分:1)

您可以扩展Request的子类,并覆盖getBody()方法,并以getBody()方法返回图像的字节数据。

答案 2 :(得分:0)

可以使用volley lib将图像发送到服务器,而无需使用Multipart类。 您只需要将 base64 格式的图像发送到服务器。 它对我有用。