Создайте и скачайте файл динамически в php - PullRequest
0 голосов
/ 19 мая 2011

Я создаю файл Excel динамически (данные поступают из базы данных). при вызове URL работает нормально, показывает диалоговое окно загрузки. но я хочу сохранить этот файл в папке (т.е. на жестком диске моего сервера) динамически всякий раз, когда я вызываю этот URL, используя функцию CURl Как я могу установить заголовки таким образом, чтобы он создал файл Excel и сохранить его в папке. Код заголовка, который я использую,

<?php
   $name = "myFile";
   $file_ending = "xls";
   header("Content-type: application/octet-stream");
   header("Content-Disposition: attachment; filename={$name}.{$file_ending}");
   header("Pragma: no-cache");
   header("Expires: 0"); 

   echo "the data...";
?> 

или есть другой способ сделать это. ПРИМЕЧАНИЕ. Я так хочу, потому что эта функция будет вызываться планировщиком веб-серверов.

Ответы [ 2 ]

4 голосов
/ 19 мая 2011

Вы не можете сохранить что-либо по определенному пути, установив заголовки. Заголовки HTTP специально помогают только переносить данные через сетевое соединение HTTP, которое ничего не знает о файловых системах.

Возможно, вы просто хотите записать данные в файл вместо этого?

file_put_contents('file.xls', "the data...");
0 голосов
/ 02 января 2014

Легко

Создайте пустой каталог, скажем, назовите его «downloads»

создайте файл .htaccess в каталоге «downloads» со следующим

Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . dummy.php

Создайте файл в каталоге «downloads» с именем dummy.php

<?php
  param = $_Get["param"];
  echo "The file contents, echo anything you want"
?>

Сохраняя каталог пустым, каждый раз, когда он не может найти файл, он вызывает dummy.php

Любой файл, который вы хотите, чтобы пользователь загрузил, укажите им / downloads / any_madeup_filename

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...