2016-10-26 10 views
0

私はAndroid上のエンドユーザーの選択からファイルをアップロードしようとしています。
ユーザーがファイルを選択し、Webサービスにアップロードします。私のコードのサンプルがあります。
私が理解していないことは、ギャラリーから画像を選択しても問題ありません。私はストレージからファイルを選択した場合は、私は例外を取得:ファイルからファイルボディを読み込もうとしています - Android

java.io.FileNotFoundException:

/content:/com.android.externalstorage.documents/document/ ... 。オープンに失敗しました:ENOENT(そのようなファイルやディレクトリはありません)

私を助けてください。

case PICK_FILE: 
    if (resultCode == RESULT_OK) { 
     // Get the Uri of the selected file 
     Uri uri = intent.getData(); 
     try { 
      // Get the path 
      String path = FileGetPath(getApplicationContext(), uri); 
      if(path==null){ 
       File f = new File(uri.toString()); 
       path = f.getAbsolutePath(); 
      } 
      File file = new File(path); 
      HttpPost post = new HttpPost(DomainToCall() + _uploadHandler); 

      MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); 
      entityBuilder.addPart("picture", new FileBody(file)); 
      post.setEntity(entityBuilder.build()); 
      HttpResponse response = client.execute(post); 
      HttpEntity httpEntity = response.getEntity(); 
      String result = EntityUtils.toString(httpEntity); 
     } catch (Exception e) { 

     } 
    } 
} 

答えて

0

私はこの問題は、ファイル対イメージではありません 問題は、私が持っているあなたのマルチ に渡すために、次のコードは、あなたに

Uri selectedImage = data.getData(); 
String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

Cursor cursor = getContentResolver().query(
     selectedImage, filePathColumn, null, null, null); 
cursor.moveToFirst(); 

int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
String filePath = cursor.getString(columnIndex); 
cursor.close(); 

File f = new File(filePath); 

使用Fを助けるかもしれ

パスを選んについてだと思いますファイル用に試してみませんでした。イメージ用に試しただけです。 それを使用して、動作するかどうか教えてください。

関連する問題