谷歌驱动器文件的文件路径为空

时间:2017-09-29 10:03:53

标签: java android file-upload remote-server

我正在开发一个上传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();
            }
        }
   }

1 个答案:

答案 0 :(得分:0)

  

但是当选择了Google驱动器文件时,由于路径空白,文件上传失败。

FilePath.getPath(mActivity, selectedFileUri)无效。 Uri不是文件。

使用ContentResolveropenInputStream()获取InputStream标识的内容Uri。可以直接使用InputStream,也可以使用它在您控制的某个文件中制作自己的内容副本,然后使用该副本。