在阅读了很多文章,并通过stackoverflow提出了大量问题之后,我无法找到答案直到现在我的问题或情况!
所以,我创建了一个包含很多包和活动的应用程序,我使用Volley库作为我所有网络操作的基础框架。我成功地能够从服务器和图像中检索数据,一切都很顺利。
我现在有这个问题:我希望能够从图库或相机中选择图像(我也有这个并在我的应用程序中成功启用)但是我需要将它发布到服务器,我真的没有想法使用json通过服务器发布图像,虽然我可以检索所需的所有图像(超过100个图像),但我仍然无法发送任何服务器。
我回到凌空Volley presentation并尝试理解所说的一切。但我发现这都是关于获取数据而不是发布..
所以在尝试了一些代码之后,我尝试使用httpclient(每个单独的)进行排序请求(字符串请求),但我没有任何工作。
所以如果我需要将图像发布到服务器,最好的方法是什么?是通过在同一个应用程序中使用httpclient常规请求使用volley OR吗? 如果是凌空,我已经尝试This Link和This Question以及this Question
我很困惑!我试图从3天开始理解这一点,直到现在我无法发布图像! 我该怎么办?我错过了什么或者有什么我误解了吗?
关于此的任何链接或教程?
很抱歉没有发布任何代码的人,因为我的尝试只是理解但没有尝试任何代码:(
编辑 - 我确实解决了我的问题,很快就会与公众分享......
答案 0 :(得分:1)
您的图片存储在哪里?它在res/
文件夹中吗?它在记忆中吗?它是文件吗?如果你可以设法为图像打开一个InputStream,那么使用这个StringRequest
子类应该做的伎俩:
public class PostFileRequest extends StringRequest {
private final InputStream mStream;
public PostFileRequest(final String url,
final Response.Listener<String> listener,
final Response.ErrorListener errorListener,
final InputStream stream) {
super(Method.POST, url, listener, errorListener);
mStream = stream;
}
@Override
public byte[] getBody() throws AuthFailureError {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
streamToStream(mStream, out);
return out.toByteArray();
}
public static void streamToStream(final InputStream in, final OutputStream out) {
try {
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}