[android]改造︰ 2.0.0-beta2 发布数组的文件

标签: Android
发布时间: 2016/9/26 4:15:07
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我将多个数据发送到服务器,并使用改造改造︰ 2.0.0-beta2。 数据包含数组的文件 ArrayList<File> 。 我使用这段代码将分开的文件发送︰

public Call<User> requestUpdateProfile3(String token, File image) {    
RequestBody requestBodyImage = RequestBody.create(MediaType.parse("multipart/form-data"), image);
            return apiService.updateProfile3(token, requestBodyProfile, requestBodyImage);

和这对 ApiService

@Multipart
    @POST("/shanyraq/profile/update")
    Call<User> updateProfile3(
            @Header(value = "X-AUTH-TOKEN") String toke,
            @Part("1\"; filename=\"1.jpg") RequestBody image);

问题是︰ 如何可以寄文件使用改造︰ 2.0.0 阵列-beta2??

解决方法 1:

我已上传多个图像像下面。其中上传图像与他们的名字。

Service接口︰

    @Multipart
    @POST(ConstantsWebService.UPLOAD_SERVICES_IMAGE)
    Call<List<String>> uploadImage(
             @Header("Authorization") String token,
             //@Part("file\"; filename=\"902367000083-1.jpg") RequestBody mapFileAndName); //for sending only one image
             @PartMap() Map<String,RequestBody> mapFileAndName); //for sending multiple images

和要求︰

    HashMap<String,RequestBody> map=new HashMap<>(listOfNames.size());
    RequestBody file=null;
    File f=null;

    for(int i=0,size=listOfNames.size(); i<size;i++){
        try {
            f = new File(context.getCacheDir(), listOfNames.get(i)+".jpg");
            FileOutputStream fos = new FileOutputStream(f);
            Bitmap bitmap = getImageFromDatabase(listOfNames.get(i));
            if(bitmap!=null){
                bitmap.compress(Bitmap.CompressFormat.JPEG, 0 /*ignored for PNG*/, fos);
                fos.flush();
                fos.close();
            }else{
                view.showErrorView("imageNotFound"); //todo
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
            view.showErrorView("imageNotFound || file not created"); //todo
            return;
        }

        file=RequestBody.create(MediaType.parse("multipart/form-data"), f);
        map.put("file\"; filename=\""+listOfNames.get(i)+".jpg",file);
        file=null;
        f = null;
    }

    serviceOperation.uploadImage(token,map).enqueue(){..}

所以你改回到 type ,标头名称、 图像名称。

赞助商