【发布时间】:2018-08-14 16:22:54
【问题描述】:
我正在使用改造 2 上传我的文件,我遇到的一个问题是,当我尝试从 URI 获取文件时出现错误:
W/System.err: stat failed: ENOENT (No such file or directory) : /external/images/media/1838
stat failed: ENOENT (No such file or directory) : /external/images/media/1838
stat failed: ENOENT (No such file or directory) : /external/images/media/1838
我在日志中的无限循环中收到该错误。 我为从图库中获取图像而编写的代码:
imageViewUpdateProfileActivity.setOnClickListener(view -> {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 1);
});
并在 onActivityResult 中获取它:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
File file = new File(Objects.requireNonNull(Objects.requireNonNull(data).getData()).getPath());
MultipartBody.Part filePart = MultipartBody.Part.createFormData("image", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
RequestBody fullname = RequestBody.create(MediaType.parse("text/plain"), editTextFullNameUpdateProfileActivity.getText().toString());
RequestBody Gender = RequestBody.create(MediaType.parse("text/plain"), gender);
RequestBody aboutMe = RequestBody.create(MediaType.parse("text/plain"), editTextAboutMeUpdateProfileActivity.getText().toString());
ApiClient.getClient().create(ApiService.class).updateProfilePhoto(App.userProfile.getUsername(), filePart, fullname, Gender, aboutMe).enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
}
【问题讨论】:
-
您检查过 onActivityResult 上的“数据”变量吗?似乎是文件路径问题。
标签: android image file retrofit multipart