android - 使用改造(pdf,ppt,png,jpg)“code = 500,内部服务器错误”上传文件有什么问题
问题描述
在此处输入图像描述我正在使用改造设置文件上传功能,但出现内部服务器错误。有时文件正在服务器上上传详细信息,但响应出现在错误正文中。我不知道我的代码或服务器端代码是否有任何问题。
我为请求正文尝试了不同的代码。
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); 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);
预期的结果是文件应该上传到服务器并成功获得响应。实际结果是出现内部服务器错误,有时会在错误正文中收到成功响应消息。
解决方案
我已经解决了这个问题。我使用了错误的请求正文模式。我不得不使用多部分表单数据而不是文本。
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);
这是对我有用的正确代码。
推荐阅读
- python - 好吧,我在尝试在 python 中运行 wolfram alpha 时面临“属性错误:测试”
- java - 如何从 Java 获取 ruby 脚本的方法列表及其在 JRuby 中的参数
- c++ - 如何使用 C++ 的 CDatabase ODBC 连接到 SQL Server 数据库来设置或禁用查询超时
- node.js - MongoDB - 发布和获取用户特定数据
- c++ - 如何将 wxDataViewListCtrl 更改为适合 wxPanel
- python - Pyinstaller - 如何包含图像文件夹?
- c# - “生成方法”建议不支持重载方法
- json - 读取 JSON 并解析内容并在 Scala 中显示结果
- python - 如何使用这个等式在 Python 中计算样本量?
- python - 如何绘制多个条形图?