3

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

4

3 回答 3

3

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

con.setRequestProperty("Content-Type", "multipart/form-data; 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());
}

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

如果您不喜欢 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

希望对你有帮助!

于 2013-11-14T15:40:13.677 回答
1

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

于 2014-04-23T06:35:32.497 回答
0

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

于 2015-04-22T12:48:53.223 回答