用凌空上传多个图像?

时间:2015-12-14 05:10:20

标签: java android android-volley multipart

我在SO和其他内容中也经历了很多帖子。但我无法获得任何最新的官方或其他帖子,其中不包含任何已弃用的代码,用于使用volley上传多个图像。我来了解Apache HTTP客户端删除和新的Android M相关,而不是在下面使用。

android {
    useLibrary 'org.apache.http.legacy'
}  

那么,任何人都可以帮助我使用新的更新已弃用的少量排球类进行多个图像上传吗?

2 个答案:

答案 0 :(得分:4)

你可以使用来自here的最新版本的凌空。它是一个非官方镜像,有一些小错误修复,源代码会定期与官方排球库同步。

for Gradle

compile 'com.mcxiaoke.volley:library:1.0.19' 

或者您可以从here

下载已编译的版本

现在,您可以使用以下附加类在[{1}}的{​​{1}}的帮助下使用排球进行多部分请求,而不使用任何弃用的代码。

CustomMultipartRequest.java

示例用法

MultipartEntityBuilder

您可以使用org.apache.http.entity.mime//Auth header Map<String, String> mHeaderPart= new HashMap<>(); mHeaderPart.put("Content-type", "multipart/form-data;"); mHeaderPart.put("access_token", accessToken); //File part Map<String, File> mFilePartData= new HashMap<>(); mFilePartData.put("file", new File(mFilePath)); mFilePartData.put("file", new File(mFilePath)); //String part Map<String, String> mStringPart= new HashMap<>(); mStringPart.put("profile_id","1"); mStringPart.put("imageType", "ProfileImage"); CustomMultipartRequest mCustomRequest = new CustomMultipartRequest(method, mContext, url, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { listener.onResponse(jsonObject); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { listener.onErrorResponse(volleyError); } }, mFilePartData, mStringPart, mHeaderPart); 来访问httpmime-4.3.5.jar以及用于发出请求的其他方法,或者如果您的定位API 23和以上。

httpcore-4.3.2.jar

任何方式我都在使用上面提到的jar,它也像Android M中的魅力一样。

<强>更新

请注意,MultipartEntityBuilder已弃用,不再维护,请使用android { useLibrary 'org.apache.http.legacy' } 的正式版。

com.mcxiaoke.volley:library:1.0.19

答案 1 :(得分:2)

此时,Volley库(Google和mcxiaoke的一个)仍然在其众多类中使用Apache的库。如果您仍想使用Volley 而没有任何Apache依赖,则需要将其用作项目中的模块并修改其源代码文件。

你可以参考my GitHub sample code ,你会发现我已经定制了一些类,例如NetworkResponseHttpHeaderParserBasicNetworkHurlStack,{ {1}} ...对于多部分请求,请使用Volley文件。

您会看到MultipartActivity.java文件内容:

build.gradle

另一个好的替代方案,恕我直言,正在使用OkHttp,我在GitHub也有一个工作示例代码,请看看。

希望它有所帮助!