繁体   English   中英

使用改造(pdf、ppt、png、jpg)“代码= 500,内部服务器错误”上传文件的问题是什么

[英]what is the issue in file uploading using retrofit (pdf,ppt, png,jpg) "code=500, internal server error"

在此处输入图像描述我正在使用改造设置文件上传功能,但出现内部服务器错误。 有时文件正在上传到服务器上,但有详细信息,但响应出现在错误正文中。 我不知道我的代码或服务器端代码有什么问题。

我为请求正文尝试了不同的代码。

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);

这是对我有用的正确代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM