当前位置: 首页 > 知识库问答 >
问题:

获取URI的路径始终为空?

邹丰羽
2023-03-14

因此,我使用Reformation将图像上传到我们的服务器,并使用gallery chooser选择图像。我试图获取图像的路径,因为uri。getPath()返回未找到的文件作为异常。我几乎看过关于这个主题的每一篇stackoverflow文章,但仍然没有答案。下面的代码与我在网上看到的所有代码都类似,它总是返回null,我不知道为什么。请帮忙

        @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        try {
            android.net.Uri selectedImage = data.getData();

            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage);
            // Log.d(TAG, String.valueOf(bitmap));
            ImageView imageView = (ImageView) findViewById(R.id.expandedProfilePic);
            imageView.setImageBitmap(bitmap);

            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            android.database.Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            if (cursor == null)
                return;

            cursor.moveToFirst();

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

            // is always null
            System.out.println("FILE PATH " + filePath);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

共有1个答案

公孙慎之
2023-03-14

我试图获取图像的路径,因为uri。getPath()返回未找到的文件异常

假设您所说的“图库选择器”是指< code>ACTION_GET_CONTENT或者可能是< code>ACTION_PICK,那么就没有路径,因为< code>Uri不是一个文件。

我几乎看过所有关于这个主题的Stackoverflow文章

不,你没有。具体来说,你没有读过我贡献的几十篇文章中的任何一篇,比如这篇或这篇或这篇或这篇或这篇或这篇或这篇或这篇。这些都是2017年的。

我拥有的以下代码类似于我在网上看到的所有内容

并且该代码不适用于大多数Uri值。

使用 ContentResolveropenInputStream() 获取有关 Uri 标识的内容的 InputStream。理想情况下,您只需使用输入流。在改造的情况下,虽然我没有尝试用它上传内容,但我的猜测是它坚持使用文件。在这种情况下,请在您控制的某些文件上使用 InputStreamFileOutputStream 来制作内容的副本。然后,上传副本,完成后将其删除。

 类似资料:
  • 如何获取相机捕获的原始图像的路径或uri。当我使用下面的代码时,它会返回google文档中提到的原始图像的缩略图。我想要原始图像的路径或uri。 我使用了以下代码,但它返回一个缩略图。

  • 我想通过打开一个文件来获得一个文件路径,该文件选择由start ActivityForResult,其意图是意图。ACTION_GET_CONTENT和setType(* / *), 但是当我选择打开“Nexus 5X”项时,返回uri是“com.android.externalstorage.documents”,如何处理这种类型uri。有一些代码。 截图

  • 问题内容: 我输入的是一个字符串。如何获得最后的路径段(在我的情况下是id)? 这是我的输入URL: 我必须获得我尝试过的ID: 但这是行不通的,并且肯定有更好的方法可以做到这一点。 问题答案: 是您要寻找的: 或者

  • 我想从URI中获得完整的文件路径。URI不是图像,而是音乐文件,但如果我像纵隔解决方案那样做,如果应用程序用户选择eg Astro作为浏览器,而不是音乐播放器,它就不会工作。我怎么解决这个?

  • 问题内容: 方法request.getRequestURI()返回带有上下文路径的URI。 例如,如果一个应用程序的基本网址(即上下文路径是 MYAPP ),和我打电话了,它将返回。 有什么办法可以让我们只获得这部分,即没有上下文路径的URI? 问题答案: 如果您位于映射在前缀模式上的前contoller servlet内,则可以使用。 假设您的示例中的servlet映射到,则将返回该值,这将是典