I'm writing a web application that, among other things, allows users to upload files to my server. In order to prevent name clashes and to organize the files, I rename them once they are put on my server. By keeping track of the original file name I can communicate with the file's owner without them ever knowing I changed the file name on the back end. That is, until they go do download the file. In that case they're prompted to download a file with a unfamiliar name.
My question is, is there any way to specify the name of a file to be downloaded using just HTML? So a user uploads a file named 'abc.txt' and I rename it to 'xyz.txt', but when they download it I want the browser to save the file as 'abc.txt' by default. If this isn't possible with just HTML, is there any way to do it?
This will have to be done on the server side. You will have to have the old file name in a database somewhere, and then you could move it to a temp folder with the correct name and send that file to the user. TBQH i think you should consider avoiding name clashes with sub directories and store the path to each file in your database instead of old name / new name.
Well, @Palantir's answer is, for me, the most correct way!
If you plan to use that with multiple files, then i suggest you to use (or make one) PHP Download Manager.
BUT, if you want to make that to one or two files, I will suggest you the mod_rewrite option:
You have to create or edit your .htaccess file on htdocs folder and add this:
With this code, users will download xyz.txt data with the name abc.txt
NOTE: Verify if you have already the "RewriteEngine on " on your file, if yes, add only the second for each file you wish to redirect.
Good Luck ;) (Sorry for my english)
When they click a button to download the file, you can add the HTML5 attribute
download
where you can set the default filename.That's what I did, when I created a xlsx file and the browser want to save it as zip file.
it's very easy by using HTML5
download
attribute!https://codepen.io/xgqfrms/full/GyEGzG/
Can't find a way in HTML. I think you'll need a server-side script which will output a content-disposition header. In php this is done like this:
if you wish to provide a default filename, but not automatic download, this seems to work.
In fact, it is the server that is directly serving your files, so you have no way to interact with it from HTML, as HTML is not involved at all.