Я пытаюсь загрузить файл с помощью SlimPHP, и он, похоже, не работает для меня.Приложение SlimPHP не загружает файл
Вот маршрут я сделал:
$backendApp->post('/export', function ($request, $response, $args) {
$emails = $this->orginization->exportEmails();
$exportFile = $this->file->writeEmailExport($emails, 'AllEmails.csv');
$fh = fopen($exportFile, "r");
$stream = new \Slim\Http\Stream($fh);
$response = $response->withHeader('Content-Type', 'application/octet-stream')
->withHeader('Content-Description', 'File Transfer')
->withHeader('Content-Disposition', 'attachment; filename="' . basename($exportFile) . '"')
->withHeader('Content-Length', filesize($exportFile))
->withBody($stream);
return $response;
});
Я знаю, за то, что $ Exportfile является допустимым PHP потокового ресурса, как содержимое файла возвращается в ответ, мне просто нужно, чтобы вызвать функциональность загрузки файлов браузера для пользователя.
Это заголовки, которые присутствуют на ответ:
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Description:File Transfer
Content-Disposition:attachment; filename="AllEmails.csv"
Content-Length:267
Content-Type:application/octet-stream
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Host:localhost:8080
Pragma:no-cache
X-Powered-By:PHP/5.6.15
ли сразу выдающийся все, что я делаю неправильно здесь? Я вижу, что содержимое файла возвращается на вкладку ответов, поэтому я знаю, что получаю содержимое файла, мне просто нужно, чтобы пользователь попросил загрузить указанный файл.
Мой код файла загрузки не использует тонкую фреймворк, а мой код составляет 3 года, поэтому, возможно, я не должен комментировать, но мне просто интересно - вы пытались использовать 'preg_replace (" ([^ \ w \ s \ d \ -_ ~,;: \ [\] \ (\].] | [\.] {2,}) ", '', $ exportFile)' и 'filter_var ($ dl_file, FILTER_SANITIZE_URL)' где ' $ dl_file' является результатом preg_replace, чтобы удалить любые недопустимые символы? Если вы получаете содержимое файла .... Я не совсем уверен, что это поможет, просто мысль. – Inkdot