java - 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
解决方案
但文件扩展名不包含在文件路径中
没有“文件路径”,因为这不是文件。
我想显示文件的名称和类型是 .pdf 还是 .png
用来DocumentFile.fromSingleFile()
包装你Uri
的DocumentFile
. 然后,您可以使用getName()
和getType()
分别DocumentFile
获取显示名称和 MIME 类型。
推荐阅读
- intellij-idea - 如何更改 RubyMine(Jetbrains IDE)文件树的字体颜色?
- c++ - 关于 C++ 中文字定义的说明
- python - 无法使用虚拟环境在 Windows Ubuntu WSL 中启动 Scrapy 项目
- android - 如何克服 Jarsigner 报告“签名算法:MD5withRSA(弱)”
- javascript - 检测到可能的 EventEmitter 内存泄漏。不和谐.js
- python - 多线程:tkinter mainloop 不在主线程中
- javascript - 在我的 json 和 javascript 文件中找不到错误
- php - Yii2 连接到另一台服务器上 Docker 实例内的 MYSQL 数据库
- export-to-csv - DBeaver 导出为 CSV
- c++ - 我们可以通过排序左起点来解决逐点覆盖问题吗