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

如何获得完整的路径,如果图像发送到服务器的多部分在Android

毕和志
2023-03-14

在我的应用程序中,用户可以从相机中拍照,或者从Gallery中选择并裁剪照片以发送到服务器。所以没问题。,问题是当用户从图库中选择图片时

截取摄像头的URI路径:/mnt/sdcard/avatar_1434958383404。jpg
从存储裁剪的URI路径:/external/images/media/19

错误:

IOException:/external/images/media/19:open failed:enoint(没有这样的文件或目录)

共有2个答案

轩辕煌
2023-03-14

截取摄像头的URI路径:/mnt/sdcard/avatar_1434958383404。jpg

从存储裁剪的URI路径:/external/images/media/19

在API 19之后,内容URI发生了变化

content://com.android.providers.media.documents/document/image: 151323

/存储/3437-6630/Pics/IMG_5737。JPG

在API19之前,调用gallery意图将导致gallery。但在API 19之后,它将导致调用图像。从这里你可以进入Gallery或外部存储或Google drive。所以有可能会出现运行时异常。

主要活动。JAVA

       String realPath =" ";
       try {
            realPath = RealPathUtil.getRealPathFromURI(this, data.getData());
        }catch (RuntimeException e){
            realPath = RealPathUtil.getRealPathFromURI_API19(this, data.getData());
        }

在RealPathUtil中。JAVA

获取路径

public static String getRealPathFromURI(Context context,Uri contentURI) {
    //Log.e("in","conversion"+contentURI.getPath());
    String path;
    Cursor cursor = context.getContentResolver()
            .query(contentURI, null, null, null, null);
    if (cursor == null)
        path=contentURI.getPath();

    else {
        cursor.moveToFirst();
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
        path=cursor.getString(idx);

    }
    if(cursor!=null)
        cursor.close();
    Log.e("GGGG CCC ",path);
    return path;
}

getRealPathFromURI_API19

@SuppressLint("NewApi")
public static String getRealPathFromURI_API19(Context context, Uri uri){
    String filePath = "";
    String wholeID = DocumentsContract.getDocumentId(uri);

    // Split at colon, use second item in the array
    String id = wholeID.split(":")[1];

    String[] column = { MediaStore.Images.Media.DATA };

    // where id is equal to
    String sel = MediaStore.Images.Media._ID + "=?";

    Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            column, sel, new String[]{ id }, null);

    int columnIndex = 0;
    if (cursor != null) {
        columnIndex = cursor.getColumnIndex(column[0]);
    }

    if (cursor != null && cursor.moveToFirst()) {
        filePath = cursor.getString(columnIndex);
    }
    if (cursor != null) {
        cursor.close();
    }
    Log.e("GGGGG FilePath",filePath);
    return filePath;
}
阎志义
2023-03-14

您应该从URI获取路径。使用以下功能:

private String getRealPathFromURI(Uri contentURI) {
        //Log.e("in","conversion"+contentURI.getPath());
       String path;
        Cursor cursor = getContentResolver()
                   .query(contentURI, null, null, null, null); 
        if (cursor == null) 
            path=contentURI.getPath();

        else {
            cursor.moveToFirst(); 
            int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
            path=cursor.getString(idx);

        }
        if(cursor!=null)
            cursor.close();
        return path;
    }
 类似资料:
  • 我在做一个简单的项目上传谷歌驱动器上的文件。然后我需要“显示”这个文件给用户,通过使用html标记,这我需要知道URL到我的图像。但我不知道怎么弄。我试着添加 https://drive.google.com/file/d/

  • 我使用下面的代码来捕获人脸使用Haar级联分类器,但仍然没有得到完整的头部图像

  • 问题内容: 通过带有jquery的ajax提交表单时,是否可以使用完整的服务器路径而不是url? 下面的示例不起作用,但是它将使您对我正在尝试执行的操作有所了解。我知道您无法执行跨域Ajax请求,但这都在同一台物理服务器上。 我不想设置代理或任何过于花哨的东西,如果没有办法轻松地做到这一点,我只会在服务器上移动一些文件,但我希望可能有一个简单的解决方案。 谢谢! 问题答案: 不,那行不通。这些不是

  • 问题内容: 当我在Java 7中创建SSLServerSocket时,服务器正确使用了我的服务器证书和密钥。该证书是由ca的子ca颁发的。因此,从根证书到服务器证书的完整链有四个证书。完整的链位于密钥库/信任库中。 但是,当客户端连接服务器时,服务器始终只会自己发送服务器证书。这也适用于基于Java的Web服务器,例如Jetty。 因为大多数客户端仅安装了根ca证书,而没有安装两个子ca证书,所以

  • 问题内容: 有没有一种简单的方法可以打印的完整路径? 的 应该打印 问题答案: 使用 readlink :

  • 我在我的屏幕上有四个图像视图,从相机中捕获图像并显示在其中,现在我想将这些图像上传到服务器上。因此,我使用了下面的代码来获取它们的路径,但它通过了异常。是否有可能从摄像机拍摄的图像视图将图像上传到服务器(无需将图像存储到内存中)。