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

问题描述:

如何使用android排球库将位图图像上传到服务器?我试图使用android volley将图像上传到服务器。如果在android volley中没有这样的选项,您能否建议我以更快的速度联网操作。 欢迎您向我发送有关此主题的任何可用教程的链接如何使用android排球库将位图图像上传到服务器?

据我所知,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()); 

} 依此类推。 我写了一篇关于它的教程(因为你在问一个链接)。你可以看看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 

希望它可以帮助你!

+5

请问你是否准确,并告诉我们为什么你认为凌空不是发送大量数据的正确选择? (imho图像中等,不大) – WarrenFaith

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

+0

嗨@footman,你介意分享你如何得到这个工作?我在使用Volley将图像发布到服务器时遇到了问题。总是得到400响应。介意分享? – ito

可以使用volley lib将图像发送到服务器,而无需使用Multipart类。 您只需将base64格式的图像发送至服务器即可。 它为我工作。

+0

Base64不是将图像传递到Web服务的好方法。它只适用于小图片。一旦你开始处理更大的图像,你就会遇到各种各样的问题(请求实体大等) –