我正在使用改装改造: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 ??
答案 0 :(得分:3)
我上传了多张图片,如下所示。哪个上传带有他们名字的图片。
服务界面:
@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(){..}
所以你改变了返回类型,标题名称,图像名称。
答案 1 :(得分:0)
如果这对你有帮助,我会很高兴也很高兴。
服务器API合同: 输入类型:多部分 - 来自数据
要通过名为&#34; 图像&#34;
的密钥发送到正文的数据<body ng-controller="MainCtrl">
<div ng-init="value = cal_result()">
<h4 ng-if="value < 0">0</h4>
<h4 ng-if="value > 0">{{value}}</h4>
</div>
答案 2 :(得分:0)
Interface structure:
@Multipart
@POST("user_edit_profile_save")
Call<EditProfileDto> saveEditProfile(@Part("first_name") RequestBody first_name,
@Part MultipartBody.Part profile_picture);
Calling:
RequestBody requestBodyUserId = RequestBody.create(
MediaType.parse("multipart/form-data"), "5");
MultipartBody.Part body = null;
if (path != null && path.length() > 0) {
file = new File(path);
isImageSet = true;
requestBodyPicture = RequestBody.create(
MediaType.parse("multipart/form-data"), file);
body = MultipartBody.Part.createFormData("profile_picture", file.getName(), requestBodyPicture);
} else {
requestBodyPicture = RequestBody.create(
MediaType.parse("multipart/form-data"), "");
}