Итак, я знаю, что было похожих постов , но я думаю, что этого достаточно, чтобы оправдать свой вопрос:
Я построение экспортера XLS в PHP и jQuery. Я пытаюсь POST-массив с jQuery (который, я считаю, будет слишком длинным, как строка запроса GET), и использую его для создания файла XLS на моем сервере, который пользователь затем может загрузить.
Я использовал скрытые iframes в прошлом, чтобы выполнить это, но так как они просто перенаправляют на URL, это требует от меня использования GET, что заставляет меня нервничать.
Тогда у меня вопрос: как мне сохранить эти файлы на моем сервере и связать их, если они генерируются динамически, возможно, несколькими пользователями? Будет ли скрытая ссылка iframe на отдельный PHP-скрипт, который находит файл THEIR на основе идентификатора сеанса или что-то в этом роде?
Заранее благодарен за любые рекомендации по поводу того, что, я уверен, постоянно спрашивают:)
Можно выполнить POST в скрытый iframe. Поэтому вам не нужно беспокоиться о длине строки запроса; вы опубликуете пары ключ/значение, которые сгенерируют ваш XLS-файл и впоследствии принудительно загрузят файл в браузер.
<form method="post" action="/download/xls" target="download_xls">
<fieldset>
<label>Key 1:</label>
<input type="text" name="key_1" />
</fieldset>
<fieldset>
<label>Key 2:</label>
<input type="text" name="key_2" />
</fieldset>
<fieldset>
<input type="submit" value="Submit" />
</fieldset>
</form>
<iframe id="download_xls" name="download_xls" width="0" height="0" scrolling="no" frameborder="0"></iframe>
ОБНОВЛЕНИЕ Быстрый поиск в Google выдал эту статью: http://particletree.com/notebook/ajax-file-download-or-not/
По сути, предложение состоит в том, чтобы отправить вашу форму на текущую страницу и ответить со скачиванием файла. Эта альтернатива может быть достаточно хорошей для вас.
Кажется, это должно быть довольно просто, но все зависит от того, куда вы помещаете создаваемые XLS-файлы. Если вы предполагаете, что ответ на сообщение должен быть диалоговым окном «Сохранить файл», то есть самим файлом, тогда все, что вам нужно сделать, это убедиться, что заголовок «Content-Disposition» установите «вложение», а затем выполните потоковую передачу содержимого файла.
Если вы собираетесь сгенерировать файл и сохранить его, вам придется хранить его где-то с идентификатором.В этом случае вы бы просто ответили обычной страницей со ссылкой «скачать», так что эта ссылка включает идентификатор файла. Это может вызвать либо GET, либо POST, и сервер ответит на это примерно так, как я описал выше.
На мой взгляд, скрытый здесь неуместен.