我正在开发一个上传android应用程序的文件。我的目标是将用户选择的文件从文件管理器上传到远程服务器。但是当选择google驱动器文件时,由于路径空白,文件上传失败。有人可以帮帮我吗?
我的代码是:
private void showFileChooser() {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Choose File to Upload.."), PICK_FILE_REQUEST);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == PICK_FILE_REQUEST) {
if (data == null) {
//no data present
return;
}
Uri selectedFileUri = data.getData();
selectedFilePath = FilePath.getPath(mActivity, selectedFileUri);
if (selectedFilePath != null && !selectedFilePath.equals("")) {
callUploadDocumentAPI();
} else {
Toast.makeText(mActivity, StringConstants.CANT_UPLOAD_TO_SERVER, Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:0)
但是当选择了Google驱动器文件时,由于路径空白,文件上传失败。
FilePath.getPath(mActivity, selectedFileUri)
无效。 Uri
不是文件。
使用ContentResolver
和openInputStream()
获取InputStream
标识的内容Uri
。可以直接使用InputStream
,也可以使用它在您控制的某个文件中制作自己的内容副本,然后使用该副本。