here 제공된 지침을 사용하여 개장을 시도하고 있습니다. 이 게시물은 다음과 같이 매우 오래된 파일 선택 도구를 사용하도록 권장합니다.열기 실패 : ENOENT (해당 파일 또는 디렉토리 없음) 올바른 URI 형식을 가져올 수 없습니다.
//https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
// use the FileUtils to get the actual file by uri
File file = FileUtils.getFile(this, fileUri);
대신에 아래 코드를 사용하여 파일을 가져 오기 위해 intent를 사용하기로 결정했습니다.
uploadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK
&& data != null && data.getData() != null) {
Uri fileUri = data.getData();
Log.d(LOG_TAG, "fileUri " + fileUri.toString());
try {
File file = new File(fileUri.getPath());
Log.d(LOG_TAG, "file " + file.toString());
// create RequestBody instance from file
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), file.getAbsoluteFile());
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part body =
MultipartBody.Part.createFormData("picture", file.getName(), requestFile);
// add another part within the multipart request
String descriptionString = "POINT(12.9085608 77.6106535)";
RequestBody location =
RequestBody.create(
MediaType.parse("multipart/form-data"), descriptionString);
// finally, execute the request
Call<ResponseBody> call = mAbService.uploadImage(location, body);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call,
Response<ResponseBody> response) {
Log.v(LOG_TAG, "success");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e(LOG_TAG, t.getMessage());
}
});
} catch (Exception e) {
Log.d(LOG_TAG, "file failed");
}
}
파일을 내 서버에 업로드하려면 올바른 경로를 가져올 수 없습니다.
08-10 01:28:36.564 20093-20093/com.sudhirkhanger.app.test D/TestActivityFragment: fileUri content://com.android.providers.media.documents/document/image%3A57373
08-10 01:28:36.564 20093-20093/com.sudhirkhanger.app.test D/TestActivityFragment: file /document/image:57373
08-10 01:28:36.658 20093-20093/com.sudhirkhanger.app.test E/TestActivityFragment: /document/image:57373: open failed: ENOENT (No such file or directory)
'File file = new File ("/ storage/emulated/0/Pictures/Screenshots/test.png");'위와 같이하면 그 일이 가능합니다. POST가 제대로 작동하는지 확인하고 싶습니다. 지금은 작동하지 않는 것 같습니다. 이것이 나의 Retrofit 수업에서의 파일 또는 실제 문제로 인한 것인지 확실하지 않습니다. https://github.com/sudhirkhanger/AswachhBharatUnofficial –