Как скачать определенный файл (CSV) с помощью сценария PHP

Я генерирую ежедневный отчет из PHP-скрипта, он находится в папке следующим образом

report_2015_02_15.csv
report_2015_02_16.csv
report_2015_02_17.csv
report_2015_02_18.csv
report_2015_02_19.csv

И я посылаю своим пользователям электронное письмо со ссылкой для загрузки, как только они нажимают на ссылку загрузки, скрипт загрузки запускает и готовит загрузку. В настоящее время он получает все файлы в массив, сортирует его и находит последние для загрузки,

у этого метода есть поток, в котором, даже когда вы переходите на электронное письмо, которое старше 2 недель и щелкает ссылку на скачивание, он дает вам последний отчет вместо того, чтобы предоставить отчет на две недели старше.

так может кто-нибудь сказать мне способ отправить ссылку на скачивание в моем электронном письме с отношением к соответствующему файлу?

сценарий электронной почты

$down_link = Config_Reader::readProjectConfig('tad')->base_url.'CSVDownload.php;

$mail = new Zend_Mail ();
$sentFromEmail = $config->sentFromrec;
$tr = new Zend_Mail_Transport_Sendmail ( '-f' . $sentFromEmail );
Zend_Mail::setDefaultTransport ( $tr );
$mail->setReturnPath($sentFromEmail);
$mail->setFrom ( $sentFromEmail, 'Reporting' );

$email_body = "Hi,<br /><br />Download the weekly details of adtracker projects, by clicking the link below.
<br /> <a href=".$down_link.">Report</a><br /><br />Thank You.";

$mail->setBodyHtml ( $email_body );
$mail->addTo ( $weeklyReportRec);
$mail->setSubject ( "Report" );

try {
$mail->send ();
} catch ( Exception $e ) {
echo "Mail sending failed.\n";
}

скачать скрипт

$basePath = "$download/dailyReport/";
$csvFiles = glob($basePath."/*.csv");
if(count($csvFiles)){
array_multisort($csvFiles, SORT_DESC);
$csvFile = $csvFiles[0];
}else{
exit("Server error!");
}

$h = fopen($csvFile, "r");
$contents = fread($h, filesize($csvFile));

2

Решение

Вы можете использовать параметр запроса, указывающий дату отчета по ссылке для скачивания. … / CSCDownload.php? Дата = 2015/02/17

Это позволит вам выбрать соответствующий отчет из доступного списка.

0

Другие решения

Вы можете использовать что-то подобное в качестве скрипта загрузки. Я внес минимальные изменения, чтобы это заработало:

$date = $_GET['date'];
$basePath = "$download/dailyReport/";
$csvFiles = glob($basePath."/*.csv");

$file = $basePath . 'report_' . $date . '.csv';
$found = false;

foreach($csvFiles as $csvFile){
if($file === $csvFile){
$found = $csvFile;
// You have found the file, so you can stop searching
break;
}
}
if(false === $found){
exit("Server error!");
}

$h = fopen($found, "r");
$contents = fread($h, filesize($found));

Теперь вы можете вызывать скрипт в вашем браузере с «example.com/getcsvfile.php?date=2015_02_15», не беспокоясь о внедрении, потому что вы проверяете, является ли файл одним из файлов csv.

0

По вопросам рекламы [email protected]