2017-01-12 7 views
-5

ファイルをアップロードするためにアンドロイドでプログラムを作成しました。すべてが完璧に動作しています。しかし、私は1Mbのより多くを持つファイルをアップロードするとき、私は私のサーバーからこのエラーを得た:「エラーアップロードしながら、」ここアンドロイドに1MB以上のファイルをアップロードまたは投稿できません

は私UploadFile()メソッド

private void uploadFile() { 
     dialog = ProgressDialog.show(getActivity(), "", "Uploading File...", true); 


     // Map is used to multipart the file using okhttp3.RequestBody 
     Map<String, RequestBody> map = new HashMap<>(); 
     long maxLength = 10000000; 
     File file = new File(selectedFilePath); 
     if(file.length() > maxLength){ 
      Toast.makeText(getActivity(), "can't upload file if size more than 10mb", Toast.LENGTH_LONG).show(); 
      dialog.dismiss(); 

     }else { 
      String name = tv_name.getText().toString(); 
      String email = tv_email.getText().toString(); 
      // Parsing any Media type file 
      RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file); 
      RequestBody requestBody1 = RequestBody.create(MediaType.parse("text/plain"), name); 
      RequestBody requestBody2 = RequestBody.create(MediaType.parse("text/plain"), email); 
      map.put("file\"; filename=\"" + selectedFilePath + "\"", requestBody); 
      map.put("name\"; username=\"" + name + "\"", requestBody1); 
      map.put("email\"; email=\"" + email + "\"", requestBody2); 

      ApiConfig getResponse = AppConfig.getRetrofit().create(ApiConfig.class); 
      Call<ServerResponse> call = getResponse.upload("token", map); 
      call.enqueue(new Callback<ServerResponse>() { 
       @Override 
       public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) { 
        if(dialog.isShowing()){ 
         dialog.dismiss(); 
        } 
        ServerResponse serverResponse = response.body(); 
        if (serverResponse != null) { 
         if (serverResponse.getSuccess()) { 
          Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show(); 

         } else { 
          Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show(); 
         } 
        } else { 
//     Log.v("Response", serverResponse.toString()); 
        } 
        // dialog.dismiss(); 
        goToProfile(); 


       } 

       @Override 
       public void onFailure(Call<ServerResponse> call, Throwable t) { 
        t.printStackTrace(); 
        dialog.dismiss(); 
        Toast.makeText(getActivity(), "Failed, Please Try Again", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    } 

TimeOutの

OkHttpClient client = new OkHttpClient.Builder() 
     .connectTimeout(5, TimeUnit.MINUTES) 
     .writeTimeout(5, TimeUnit.MINUTES) 
     .readTimeout(5, TimeUnit.MINUTES).build(); 

return new Retrofit.Builder() 
     .baseUrl(AppConfig.BASE_URL).client(client) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 
です

}

それは私のPHPコードです

$target_dir = "uploads/"; 
$target_file_name = $target_dir .basename($_FILES["file"]["name"]); 
$response = array(); 

// Check if image file is a actual image or fake image 
if (isset($_FILES["file"])) { 
    if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file_name)) { 
     $success = true; 
     $message = "Successfully Uploaded"; 
    } else { 
     $success = false; 
     $message = "Error while uploading"; 
    } 
} else { 
     $success = false; 
     $message = "Required Field Missing"; 
} 

$response["success"] = $success; 
$response["message"] = $message; 
echo json_encode($response); 

?> 
+0

絞り込みます。ブラウザまたはCURLからPHPコードを試してください。 –

+3

同じコードをここに...ほとんど同じ質問:http://stackoverflow.com/questions/41610385/my-progressdialog-is-not-disappearing ...ダミーアカウントの作成をやめて、同じ質問を投稿してください – Selvin

+0

http:///shaoniiuc.com/android/image-upload-retrofit-library/ – william

答えて

0

ファイルを圧縮してもう一度アップロードしてください。

+0

私は圧縮していますがアップロードされていません.. – william

0

使用換装のこの構成:

public static OkHttpClient okHttpClient1 = new OkHttpClient().newBuilder() 
      .connectTimeout(150, TimeUnit.SECONDS) 
      .writeTimeout(150, TimeUnit.SECONDS) 
      .readTimeout(150, TimeUnit.SECONDS) 
      .build(); 
    private static Retrofit retrofit = null; 

    public static Retrofit getClient() { 
     if (retrofit == null) { 
      retrofit = new Retrofit.Builder() 
        .baseUrl(AppConfig.BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(okHttpClient1) 
        .build(); 
     } 
     return retrofit; 
    } 

要するに、私が言うことを意味し、増加アンドロイド側のあなたのタイムアウト。

+1

私はそれをpublic static Retrofit getRetrofit(){ OkHttpClient client = new OkHttpClient.Builder ()、.connectTimeout(5、TimeUnit.MINUTES) .writeTimeout(5、TimeUnit.MINUTES).readTimeout(5、TimeUnit.MINUTES)。ビルド();。 リターン新しいRetrofit.Builder() .baseUrl(AppConfig.BASE_URL).client(クライアント) .addConverterFactory(GsonConverterFactory.create()) .build(); } – william

関連する問題