我想将pdf上传到我的服务器。为此我想让用户从他们的本地设备以及谷歌驱动器中选择文件
如果用户从他们的设备中选择文件,那么我就会喜欢 内容://com.android.providers.downloads.documents/document/5447 但是当用户从他们的谷歌驱动器中选择文件然后我得到uri喜欢 内容://com.google.android.apps.docs.storage/document/acc%3D1%3Bdoc%3D10324 我无法将此uri转换为文件
选择文件的代码
private void showFileChooser() {
Intent intent = new Intent();
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),PICK_FILE_REQUEST);
}
创建多部分的代码
public MultipartBody.Part GetMultiPartCV(Uri uri){
if (uri!= null) {
File file = FileUtils.getFile(this, uri);
RequestBody requestFile = RequestBody.create(MediaType.parse(getContentResolver().getType(uri)), file);
return MultipartBody.Part.createFormData("file", file.getPath(), requestFile);
} else {
return null;
}
}
当我从下载文件夹上传时,它完美地工作,因为我能够将uri转换为文件,但是当我从谷歌驱动器中选择filr时,我无法将uri转换为文件,因此它给了我空指针异常。