Skip to content

feat(fs): cross platform approach to get file name from filepath - #2421

Closed
VulnX wants to merge 8 commits into
tauri-apps:v2from
VulnX:feat/fs/get-filename-android
Closed

feat(fs): cross platform approach to get file name from filepath#2421
VulnX wants to merge 8 commits into
tauri-apps:v2from
VulnX:feat/fs/get-filename-android

Conversation

@VulnX

@VulnX VulnX commented Feb 14, 2025

Copy link
Copy Markdown

Closes #1775

Reason

On desktop platforms, obtaining the file name from a file path is straightforward, as it is directly embedded in the path's last part. However, on Android, the situation differs. When a file is opened via the dialog plugin (see note here), a content URI is returned instead of a file path. To extract the actual file name from this URI, Android-specific APIs must be accessed via Kotlin.

Changes

A new fileName() function has been added to the guest JS API. This function internally calls the file_name() command, which acts as a thin wrapper around platform-specific implementations of the Fs struct defined in mobile.rs and desktop.rs.

For Android, the file name is resolved by querying the content URI with contentResolver.query, specifically retrieving the OpenableColumns.DISPLAY_NAME column to extract the file name.

This change enables Tauri's file system plugin to correctly retrieve file names from any path.

@VulnX
VulnX requested a review from a team as a code owner February 14, 2025 18:56
@github-actions

github-actions Bot commented Feb 14, 2025

Copy link
Copy Markdown
Contributor

Package Changes Through fba537e

There are 2 changes which include log with minor, log-js with minor

Planned Package Versions

The following package releases are the planned based on the context of changes in this pull request.

package current next
api-example 2.0.19 2.0.20
api-example-js 2.0.15 2.0.16
log 2.2.3 2.3.0
log-js 2.2.3 2.3.0

Add another change file through the GitHub UI by following this link.


Read about change files or the docs at github.com/jbolda/covector

@lucasfernog lucasfernog self-assigned this Mar 16, 2025
lucasfernog added a commit to tauri-apps/tauri that referenced this pull request Mar 17, 2025
This PR adds a new Android path plugin function to resolve file names from content URIs. `PathResolver::file_name` was added to expose this API on Rust, and the existing `@tauri-apps/api/path` basename and extname function now leverages it on Android.

Closes tauri-apps/plugins-workspace#1775

Tauri core port from tauri-apps/plugins-workspace#2421

Co-authored-by: VulnX
@lucasfernog

Copy link
Copy Markdown
Member

tested it and it works great! I think we should add this to the path plugin though, which is why i opened tauri-apps/tauri#13012 and marked you as author (did I do it correctly???)

lucasfernog added a commit to tauri-apps/tauri that referenced this pull request Mar 18, 2025
* feat(core): resolve file names from Android content URIs

This PR adds a new Android path plugin function to resolve file names from content URIs. `PathResolver::file_name` was added to expose this API on Rust, and the existing `@tauri-apps/api/path` basename and extname function now leverages it on Android.

Closes tauri-apps/plugins-workspace#1775

Tauri core port from tauri-apps/plugins-workspace#2421

Co-authored-by: VulnX

* update change file [skip ci]

Co-authored-by: VulnX <62636727+VulnX@users.noreply.github.com>

---------

Co-authored-by: VulnX <62636727+VulnX@users.noreply.github.com>
@lucasfernog

Copy link
Copy Markdown
Member

this has been merged to the path plugin, thanks! will be released soon

@VulnX

VulnX commented Mar 18, 2025

Copy link
Copy Markdown
Author

thank you!

@VulnX
VulnX deleted the feat/fs/get-filename-android branch March 18, 2025 11:55
kandrelczyk pushed a commit to kandrelczyk/tauri that referenced this pull request Apr 7, 2025
…13012)

* feat(core): resolve file names from Android content URIs

This PR adds a new Android path plugin function to resolve file names from content URIs. `PathResolver::file_name` was added to expose this API on Rust, and the existing `@tauri-apps/api/path` basename and extname function now leverages it on Android.

Closes tauri-apps/plugins-workspace#1775

Tauri core port from tauri-apps/plugins-workspace#2421

Co-authored-by: VulnX

* update change file [skip ci]

Co-authored-by: VulnX <62636727+VulnX@users.noreply.github.com>

---------

Co-authored-by: VulnX <62636727+VulnX@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[fs] On Android I cannot extract filename returned by open / pick_file(s)

2 participants