萬能的多文件上傳例子

最近項目中用到了多文件上傳,其實就是仿照微信朋友圈一樣的發送動態的效果。之前上傳圖片用的是Xutils的框架,
上傳一張沒有任何問題。而這一次是需要上傳多張的,我寫了一個for循環,將圖片累計拼入參數,這樣就需要後臺一張一張的
接收。可當時的後臺也是用的框架,是以File[]的形式接收的。然後我就找各種能封裝File[]的參數,然而並沒有找到。
折騰了好久,換了很多種方式,都沒有成功。最後無意間看到了表單形式的上傳,這次纔是找到了正主,
在OKHttp這個框架中支持多文件上傳,下面直接貼出核心代碼:

MultipartBody.Builder multipartBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
        multipartBody.addFormDataPart("method","postDynamic");
        multipartBody.addFormDataPart("uid",RequestUtils.getUid(getActivity())+"");
        multipartBody.addFormDataPart("token","1");
        multipartBody.addFormDataPart("words",dongtai_words.getText().toString());
        for(int i= 0;i<Bimp.tempSelectBitmap.size();i++){
            multipartBody.addFormDataPart("dynamicPictures","image"+i+".jpg", 
            RequestBody.create(UploadUtils.MEDIA_TYPE_PNG,new File(Bimp.tempSelectBitmap.get(i).getImagePath())));
        }
        uploadUtils.sendMultipart(multipartBody,getActivity());
        
upLoadUtils的代碼是:
public void sendMultipart(MultipartBody.Builder multipartBody, final Context context){
        OkHttpClient okHttpClient = new OkHttpClient();
        //構建請求體
        RequestBody requestBody = multipartBody.build();
        //構建請求
        Request request = new Request.Builder()
                .url(MyConfig.uploadUrl)//地址
                .post(requestBody)//添加請求體
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
            //這裏是成功的回掉,由於我是把回掉接口抽出來了,所以在這裏又寫了一個接口,
           供activity實現。這裏可以根據自己的需求寫
                successListener.onSuccess();
            }
        });
    }

別喫驚,就是這麼簡單。代碼也不多做揭示了,一看就明白了。在這裏和大家分享一下,以後不會在因此走彎路了。
以前只是聽說過這個框架,從來沒有用過,今天因爲多文件上傳找到了這裏,就大致瀏覽了一下,發現這個框架還是
蠻好用的,有時間可以深入研究一下。
在這裏說明一下,這個文件上傳是萬能的,不管是多問價還是單文件,不管是圖片還是文本,這一個就可以搞定。
以後不會再用xutils的框架寫上傳了,那個太侷限了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章