2017-09-29 134 views
1

我正在開發一個文件上傳android應用程序。我的目標是將用戶選擇的文件從文件管理器上傳到遠程服務器。但是,當谷歌驅動器文件被選中,文件上傳失敗,因爲空路徑。有人能幫助我嗎?谷歌驅動器文件的文件路徑爲空

我的代碼是:

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

你能分享你的代碼嗎? – notyou

+0

我已經在問題中編寫了我的代碼 – Abhi

+0

'callUploadDocumentAPI()'不帶任何參數?如何使用'selectedFilePath'? – Kristopher

回答

0

但是,當選擇了谷歌驅動文件,文件上傳失敗,因爲空路徑。

FilePath.getPath(mActivity, selectedFileUri)無法正常工作。 A Uri不是一個文件。

使用ContentResolveropenInputStream()得到Uri標識的內容InputStream。直接使用InputStream,或使用它在您控制的某個文件中製作自己的內容副本,然後使用該副本。

+0

有想法,謝謝 – Abhi