2012-03-02 5351 views
4

我拼命尝试将捕获的视频发送到服务器。问题是由内置相机应用程序给出的URI不是真正的文件路径。它看起来像这样 - /content:/media/external/video/media/19如何从类似“/ content:/ media/external/video/media/19”的路径中提取真实文件URI或文件数据?

如何从这种类型的URI直接访问真实路径或数据?

在阅读了android文档后,我看到它看起来像一个内容提供者的符号,但我仍然不知道如何达到我需要的数据。请帮忙!!!

在此先感谢

回答

3

我怎样才能访问真正的路径,或直接从这种URI的数据?

你不知道。它可能不作为文件存在。或者,它可能不存在,除非通过ContentProvider,否则您可以读取该文件。

相反,使用ContentResolver打开上UriInputStream,并使用InputStream将数据传输到服务器。

+0

只是为了显示你的例子 - 这是我的代码: 'InputStream为= getContentResolver()openInputStream(Uri.parse(YOUR_URI_STRING)));'。 – maddob 2012-03-27 21:47:48

+0

如何获取此类URI的类型?我的意思是如何知道它的PDF或PPT甚至WAV或MP3文件? – JRC 2012-05-28 10:56:44

+0

@JRC:如果你看看网页的右上角,你会看到一个“Ask Question”按钮。请使用它,而不是劫持其他问题。话虽如此,请问'MediaStore'为您的内容的MIME_TYPE。 – CommonsWare 2012-05-28 10:59:43

1
public String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    cursor = context.getContentResolver().query(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
    } finally { 
    if (cursor != null) { 
     cursor.close(); 
    } 
    } 
} 

见下职位 Get filename and path from URI from mediastore

相关问题