上传多张齐射图片?

2022-09-02 04:50:18

我也在SO和其他tuts中经历了很多帖子。但是我无法获得任何最新的官方或其他帖子,其中包含任何使用凌空上传多个图像的弃用代码。我开始了解Apache HTTP客户端删除和相关的新Android M,并更喜欢在下面使用。

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

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


答案 1

您可以从此处使用最新版本的凌空抽射。这是一个非官方的镜像,有一些小的错误修复,源代码将定期与官方的凌空存储库同步。

对于格雷德尔

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

或者您可以从此处下载编译版本

现在,您可以使用下面的附加类,通过 in 的帮助使用 volley 发出多部分请求,而无需任何已弃用的代码。MultipartEntityBuilderorg.apache.http.entity.mime

CustomMultipartRequest.java

示例用法

//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);

您可以使用 和 用于获取用于发出请求的其他方法,或者如果您的目标 API 23 及更高版本,则可以在 gradle 中添加以下内容。httpmime-4.3.5.jarhttpcore-4.3.2.jarMultipartEntityBuilder

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

无论如何,我都在使用提到的jar,它也像Android M中的魅力一样工作。

更新

请注意,已弃用且不再维护,请使用来自 的正式版本。com.mcxiaoke.volley:library:1.0.19jCenter

compile 'com.android.volley:volley:1.0.0'

答案 2

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

你可以参考我的GitHub示例代码,在那里你会发现我已经自定义了一些类,如,,,,...对于多部分请求,请使用该文件。NetworkResponseHttpHeaderParserBasicNetworkHurlStackVolleyMultipartActivity.java

您将看到文件内容:build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.volleynoapache"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
}

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

希望它有帮助!


推荐