Uri 转为 File
//uri转为file
Uri uri; //获取到的uri
String[] arr = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, arr, null, null, null);
if (cursor != null) {
int img_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String img_path = cursor.getString(img_index);
File file = new File(img_path); //得到的File
cursor.close(); //释放资源
} else {
ToastUtils.showShort("cursor: null");
}
Retrofit上传文件
File imgFile;//模拟的File文件
/**
* 下面两步把File转为了MultipartBody.Part,才能使用retrofit上传
* MultipartBody.Part.createFormData()的一参:"file"是后台指定的key
**/
RequestBody photoRequestBody = RequestBody.create(MediaType.parse("image/*"), imgFile);
MultipartBody.Part userImage = MultipartBody.Part.createFormData("file", imgFile.getName(), photoRequestBody);
//使用retrofit上传文件
RetrofitUtils.getInstance().getApiServier(IMapService.class)
.fileUpload(userImage, UserUtil.getUserToken())
...略