首页 > 解决方案 > Android从设备中选择文档但无法获取扩展名类型的文件名

问题描述

我希望用户能够将 pdf 和图像文件上传到服务器,在选择文件后我想显示文件的名称和类型是 .pdf 还是 .png

但文件扩展名不包含在文件路径中

这就是我开始意图的方式

   btnUploadDocument.setOnClickListener(view -> {
            Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
            chooseFile.addCategory(Intent.CATEGORY_OPENABLE);
            chooseFile.setType("image/*|application/pdf");
            chooseFile = Intent.createChooser(chooseFile, "Choose a file");
            startActivityForResult(chooseFile, REQ_UPLOAD_DOCUMENT);
        });

这就是我如何获取返回的数据

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

    if(requestCode == REQ_UPLOAD_DOCUMENT && resultCode == RESULT_OK && data != null){

        Uri path = data.getData();
        try {
            InputStream inputStream = FTLBookingActivity.this.getContentResolver().openInputStream(path);
            byte[] pdfInBytes = new byte[inputStream.available()];
            inputStream.read(pdfInBytes);
            String encodedPDF = Base64.encodeToString(pdfInBytes, Base64.DEFAULT);
            Toast.makeText(this, "Document Selected", Toast.LENGTH_SHORT).show();

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

    }
}

我尝试选择图像并且路径的值低于

content://media/external/images/media/599

标签: javaandroidfile-upload

解决方案


但文件扩展名不包含在文件路径中

没有“文件路径”,因为这不是文件。

我想显示文件的名称和类型是 .pdf 还是 .png

用来DocumentFile.fromSingleFile()包装你UriDocumentFile. 然后,您可以使用getName()getType()分别DocumentFile获取显示名称和 MIME 类型。


推荐阅读