[英]what is the issue in file uploading using retrofit (pdf,ppt, png,jpg) "code=500, internal server error"
enter image description here I'm setting up the file uploading function using retrofit but I am getting internal server error.在此处输入图像描述我正在使用改造设置文件上传功能,但出现内部服务器错误。 Sometime file is uploading on the server with details but response is coming in error body.
有时文件正在上传到服务器上,但有详细信息,但响应出现在错误正文中。 I have no idea is there any problem in my code or in server side code.
我不知道我的代码或服务器端代码有什么问题。
I have tried different code for request body.我为请求正文尝试了不同的代码。
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); MultipartBody.Part body = MultipartBody.Part.createFormData("pic", file.getName(), requestFile);
MultipartBody.Part body = MultipartBody.Part.createFormData("pic", file.getName(), requestFile);
File file = new File(PathHolder);
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("pic",
file.getName(), requestFile);
RequestBody userId =
RequestBody.create(MediaType.parse("text/plain"), uid);
RequestBody topic = RequestBody.create(MediaType.parse("text/plain"),
topicName);
RequestBody classID =
RequestBody.create(MediaType.parse("text/plain"), classId);
RequestBody shiftID =
RequestBody.create(MediaType.parse("text/plain"), shiftId);
Call<UploadDocumentResponse> resultCall = service.uploadImage(userId,
topic, classID, shiftID, body);
resultCall.enqueue(new Callback<UploadDocumentResponse>() {
@Override
public void onResponse(Call<UploadDocumentResponse> call,
Response<UploadDocumentResponse> response) {
progressDialog.dismiss();
onBackPressed();
UploadDocumentResponse iresponse = response.body();
// ViewDocModel Success or Fail
if (response.isSuccessful()) {
Toast.makeText(getApplicationContext(), response.body().
getMsg(), Toast.LENGTH_LONG).show();
imageView.setImageDrawable(null);
imagePath = null;
}
}
@Override
public void onFailure(Call<UploadDocumentResponse> call, Throwable t)
{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "couldn't upload file,
please try
again", Toast.LENGTH_LONG).show();
}
});
// APIInterface
@Multipart
@POST("Camp/API_uploadfile.php")
Call<UploadDocumentResponse> uploadImage(@Part("uid") RequestBody uid,
@Part("topic") RequestBody
topic,
@Part("classid") RequestBody
classId,
@Part("shiftid") RequestBody
shiftId,
@Part MultipartBody.Part file);
Expected result is file should be upload on server and get response in success.预期结果是文件应该上传到服务器并成功获得响应。 Actual result is getting internal server error and sometime getting success response message in error body.
实际结果是收到内部服务器错误,有时在错误正文中收到成功响应消息。
I have solved this issue.我已经解决了这个问题。 I was using wrong pattern of request body.
我使用了错误的请求正文模式。 I had to use multipart form data instead of text.
我不得不使用多部分表单数据而不是文本。
File file1 = new File(imageFilePathFront);
RequestBody requesFile = RequestBody.create(MediaType.parse("multipart.form-
data"), file1);
cnicFront = MultipartBody.Part.createFormData("CNIC_FRONT_IMG",
file1.getName(), requesFile);
This is the right code worked for me.这是对我有用的正确代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.