У меня проблема в Android коде для загрузки файла с Android на сервер. Загрузка успешно завершена, но в папке Xampp отображается пустой файл. Я использую модернизацию. Мой php файл работает правильно, проверяя в Почтальоне.
public class FormActivity extends AppCompatActivity {
Button submitt;
Button choosefile;
Intent fileintent;
TextView pathshow;
Uri returnUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
choosefile = findViewById(R.id.btn_choosefile);
pathshow = findViewById(R.id.txt_pathshow);
submitt = findViewById(R.id.btnsubmitform);
submitt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UploadFileToServer(returnUri);
}
});
choosefile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fileintent = new Intent(Intent.ACTION_GET_CONTENT);
fileintent.setType("*/*");
startActivityForResult(fileintent, 10);
}
});
}
private void UploadFileToServer(final Uri fileUri) {
String PDFPATH = String.valueOf(fileintent.getData());
File file = new File("*/*",PDFPATH);
RequestBody file_name = RequestBody.create(MultipartBody.FORM, file.getName());
Log.e("uploadFile: ", getContentResolver().getType(fileUri));
RequestBody reqFile = RequestBody.create(MediaType.parse(getContentResolver().getType(fileUri)), String.valueOf(returnUri));
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), reqFile);
DocumentApi api = ApiClient.getClient().create(DocumentApi.class);
Call<ServerResponse> responseCall = api.uploadFile(file_name,body);
responseCall.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
if (response.body().getSuccess()){
Toast.makeText(FormActivity.this, "upload successfully", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 10:
if (resultCode == RESULT_OK) {
returnUri = data.getData();
Cursor returnCursor =
getContentResolver().query(returnUri, null, null, null, null);
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
returnCursor.moveToFirst();
pathshow.setText(returnCursor.getString(nameIndex));
}
}
}
}
API для загрузки файла
public interface DocumentApi {
@Multipart
@POST("upload_image.php")
Call<ServerResponse> uploadFile(
@Part("name") RequestBody name,
@Part MultipartBody.Part file
);
}
Как я могу решить эту проблему?