Jump to content
Larry Ullman's Book Forums

Recommended Posts

I hope the forum can help with this issue.

 

The user is able to create a .csv file on the server with their own chosen file name - for example 'fred.csv'.  I would like the user then to be able to download this file onto thier own download file on their desktop. I am able to  get them to select the file from a drop down list, and separately able to download a file using the following simple program

 

<?php
// file to save is of type csv
header("Content-type: application/csv");
// here you can specify the name of the file...you can call it
// anything you want...

// here I am using the file name 'fred.csv'
header("Content-Disposition: attachment; filename=fred.csv");
// now start reading the file on your server to start
// downloading to user's desktop
readfile("fred.csv");
?>

 

This works and the file 'fred.csv'  is saved in the 'download' directory. What I would like to be able to do is use $_POST or $_GET to be able to allow a variable , say '$file_name' to be use instead to the fixed value of 'fred.csv'. I understand there is an issue with headers, but this is beyond my php ability.

 

Any help of ideas of how to achieve this would be greatly appreciated

 

Thanks

 

Harry

 

Link to comment
Share on other sites

Hey Harry,

First of all, you have to be very, very careful in this situation--allowing a user to name the file they want to download. If you're not really secure about it, it can be used to download security-related files from your server.

With that in mind, it'd be far more secure if users could only download from a specific list of possible files, even if this list is something stored in a database and it seems like users can name the file they want to download. But it sounds like...

Instead of saving the file on the server (using, say, "fred.csv") and then downloading it as a separate step (requiring the user accurately provide the same name both times), why not just save the file temporarily on the server and immediately download it using the given name? That way it's just one step. Or, if the file needs to be retained, you store it on the server using a safe name but then download it using their preferred name.

The name of the file as it will be downloaded is set here:

header("Content-Disposition: attachment; filename=fred.csv");

You can set the name of the file to be whatever you want. It does not need to be the same name as the file on the server. You can read in fred.csv and serve it as barney.csv.

 

Let me know if this is still unclear.

Link to comment
Share on other sites

 Share

×
×
  • Create New...