简体   繁体   English

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

[英]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.

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