[5.x]: Renaming an asset without the file extension fails with “” is not an allowed file extension.
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
Research direction
Start at the asset edit flow that saves the Filename field and trace how it validates extensions, especially names with no extension or a dot in the base name. Add or locate tests for renaming Test.pdf to Test-Renamed and Test-Schedule-v1.2; done means the original extension is retained or the validation error clearly reports a missing or disallowed extension.
Written by the indexing model from the issue text.
Description
What happened?
On the asset edit page, the Filename field contains the full filename, including the extension (e.g. Activities-Schedule.pdf). When editors rename a file, they often type just the new name and leave out the extension, since that's what they'd expect to edit.
Craft then rejects the save, and the error shows an empty extension: “” is not an allowed file extension. The Filename field also goes back to the original name, so it isn't clear to editors what went wrong or how to fix it. Our content editors have reported this as a bug.
The same thing happens when the new name contains a dot, such as a version number (Schedule-v1.2). Craft reads 2 as the extension and rejects it.
It would help if Craft kept the original extension when the new filename has none, or showed the extension as a fixed suffix outside the editable part of the field.
Steps to reproduce
- Upload a PDF to any asset volume, e.g. Test.pdf.
- Open the asset's edit page in the Control Panel.
- In the Filename field, replace the whole value with Test-Renamed (no extension).
- Click Save.
Expected behavior
The asset is renamed to Test-Renamed.pdf, keeping the original extension. Or, at minimum, the error says that the file extension is missing.
Actual behavior
The save fails with "Couldn’t save asset." and the field error “” is not an allowed file extension., and the Filename field goes back to Test.pdf.
Renaming to Test-Schedule-v1.2 fails the same way with “2” is not an allowed file extension.
Craft CMS version
5.11.3 (Pro)
PHP version
8.2.30
Operating system and version
No response
Database type and version
No response
Image driver and version
No response
Installed plugins and versions
- Dominant language
- PHP
- Stars
- 3.6k
- Forks
- 706
- Avg merge
- 10h 43m
- Merged PRs (30d)
- 249
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from craftcms/cms
-
[6.x]: yii2-adapter: yii\db\Expression assigned to an ActiveRecord attribute becomes a JSON stringOpenbug repo:cms
Difficulty 4/5 3-5 days Newbie friendliness 48/100
craftcms/cms#19948 · 1 comment ·
Maintainers usually reply within 1 day
-
[6.x]: Text in some input fields is clipped at the bottom on WindowsPossibly taken @brianjhanson claimed this 4 days ago. Openbug repo:cms
craftcms/cms#19928 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
bug repo:cms
Difficulty 4/5 3-5 days Newbie friendliness 15/100
craftcms/cms#19916 · 1 comment ·
Maintainers usually reply within 1 day
-
[6.x]: AdminTable not available for plugin index and settings screensPossibly taken @brianjhanson claimed this 4 days ago. Openbug repo:cms
craftcms/cms#19912 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
[6.x]: No way for custom element types to add top level buttons in toolbar or beside the Save menuPossibly taken @brianjhanson claimed this 4 days ago. Openbug repo:cms
Difficulty 5/5 Over a week Newbie friendliness 15/100
craftcms/cms#19910 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
scanaislop/aislop#482 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
humanmade/publication-checklist#73 · 1 comment ·
-
Do not throw `WordPress.Security.EscapeOutput.OutputNotEscaped` on `apply_shortcodes()`Possibly taken @tbradsha claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100