У меня есть общая функция php, которая принимает ресурс и загружает его в виде файла csv, ресурс — это файл или php: // memory. Как найти размер этого ресурса, чтобы я мог установить длину содержимого заголовка
/** Download a file as csv and exit */
function downloadCsv($filName, $fil) {
header("Content-Type: application/csv");
header("Content-Disposition: attachement; filename=$filName");
// header("Content-Length: ".......
fpassthru($fil);
exit;
}
Я могу видеть, как получить размер файла из имени файла, используя размер файла ($ filename), но в этой функции я не знаю / не имею имени файла, ресурс justa
fstat () мог бы сделать работу:
$stat = fstat($fil);
header('Content-Length: '.$stat['size']);
Вы можете получить размер файла с помощью функции filesize ().
Пример:
header('Content-Length: '.filesize($fileName));
Просто используйте php: // temp / OR php: // memory /
/** Download a file as csv and exit */
function downloadCsv($filName, $fil) {
header("Content-Type: application/csv");
header("Content-Disposition: attachement; filename=$filName");
//here the code
$tmp_filename = 'php://temp/'.$filName;
$fp = fopen($tmp_filename,'r+');
fwrite($fp, $fil);
fclose($fp);
header("Content-Length: ".filesize($tmp_filename)); //use temp filename
readfile($fil);
exit;
}