[英]Retrofit Multipart API above Android Marshmallow getting error java.lang.IllegalStateException: Multipart body must have at least one part
我正在使用Retrofit 2遇到错误,它在Android Marshmallow以下的设备上运行良好。 超过棉花糖,它给下面的错误
>java.lang.IllegalStateException: Multipart body must have at least one part.
码
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
try {
for (int i = 0; i < filePaths.size(); i++) {
File file = new File(filePaths.get(i));
String mFileName = App.getInstance().getPrefs().getUserId() + "_" + new Date().getTime() + file.getName();
builder.addFormDataPart("file[]", mFileName, RequestBody.create(MediaType.parse("multipart/form-data"), file));
}
} catch (Exception e) {
e.printStackTrace();
}
MultipartBody requestBody = builder.build();
APIInterface appInterface = APIClient.getClient().create(APIInterface.class);
Call<ResponseBody> call = appInterface.uploadMultiFile(requestBody);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
try {
if (response.isSuccessful()) {
view.onFileUploaded();
} else {
view.showToast();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
view.showToast();
}
});
你能帮我吗
这就是我使用请求正文上传图像的方式。
RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), selectedImage /* file name*/);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("image", selectedImage.getName(), fileBody);
并在您的界面类中
@Multipart
@POST(UPLOAD_IMAGE)
Call<JsonObject> uploadImage(@Part MultipartBody.Part image);
它适用于所有设备。希望对您有所帮助。
本教程将帮助您解决问题https://futurestud.io/tutorials/retrofit-2-how-to-upload-files-to-server
对于多文件上传,请使用此
List<MultipartBody.Part> projectParts = new ArrayList<>();
for (int i = 0; i < mFilesTobeincluded.size(); i++) {
File file = new File(mFilesTobeIncluded.get(i));
String boundary = String.valueOf(System.currentTimeMillis());
Log.d(TAG, "requestUpload: image " + i + " " + mFilesTobeincluded.get(i));
RequestBody requestFile =
RequestBody.create(
MediaType.parse("multipart/form-data; boundary=" + boundary),
file
);
projectParts.add(MultipartBody.Part.createFormData("name_of_key", file.getName(), requestFile));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.