http icon indicating copy to clipboard operation
http copied to clipboard

FileUpload::getSanitizedName returns wrong file extension

Open hubipe opened this issue 1 year ago • 2 comments

Version: 3.3.0

Bug Description

When uploading file.xls, method getSanitizedName() returns file.doc instead of file.xls.

Steps To Reproduce

Create a file upload and upload Microsoft Excel file with the old extension .xls. Dump FileUpload::getSanitizedName().

Expected Behavior

Method for returning sanitize name should return file.xls

Possible Solution

I've noticed, that the behavior of this method changed in the 3.2.4. The intention of the change was probably to return the correct extension for the image file uploads, but this change broke backwards compatibility for other types of files. Possible solution is to use finfo_file only for images?

hubipe avatar Jun 26 '24 11:06 hubipe

I can confirm, this "improvement" is causing a lot of troubles.. in our case e.g. .xlsm is saved as .xlsx and much more. It is also not possible to disable this magic.

@dg - https://github.com/nette/http/commit/d7cc833ee186d5139cde5aab43b39ee7aedd6f22

kuty avatar Sep 16 '24 11:09 kuty

Shall I prepare a PR for the suggested solution? I had to cap nette/http to the version 3.2.3. But there is already version 3.3. Either I have to update an application to stop using getSanitizedName() or fix this issue. So the question is - is this behavior stay as is or this change is unintended?

hubipe avatar Oct 17 '24 06:10 hubipe