Загрузка файла Ajax с использованием JQuery, PHP

Я хочу использовать функцию ajax для загрузки, посредством которой пользователь нажмет ссылку для загрузки, которая (используя ajax и $ _GET) получит доступ к файлу PHP, который обработает переданные переменные $ _GET и получит доступ к правильному файлу для загрузки.

У меня есть несколько PHP-скриптов для обработки обработки переменных $ _GET, которые работают самостоятельно, но при доступе с помощью Ajax они перестают работать.

Ниже приведен код Ajax / PHP:

function ajaxDown(){ $('#downloadmsg').html( '<img src=\"media/images/ajaxloader.gif\" width=\"128\" height=\"15\">'); $('#downloadmsg').load( 'media/downloads/downManager.php?file=".$filequery['filename']."&ftype=".$downex[1]."'); } 

Пожалуйста, просмотрите мой код и помогите мне найти, что я делаю неправильно.

Thanx

Related of "Загрузка файла Ajax с использованием JQuery, PHP"

Я думаю, проблема в том, что вы пытаетесь загрузить результат файла INTO #downloadmsg, который не будет работать, потому что .load () будет загружать результаты только как HTML … НЕ двоичные данные или другое кодирование.

Одним из подходов, который может работать, является создание скрытого iframe в HTML, например:

 <iframe id="secretIFrame" src="" style="display:none; visibility:hidden;"></iframe> 

Затем установите attr iframe в ваш запрос:

 $("#secretIFrame").attr("src","myphpscript.php?option1=apple&option2=orange"); 

а затем используя заголовки PHP, чтобы принудительно загрузить, когда источник установлен (вот пример заголовка экспортера, установленного из одного из моих сценариев, использующего поток октетов):

 header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=data.xls "); header("Content-Transfer-Encoding: binary "); 

Надеюсь это поможет!

Я знаю, что опаздываю! Но я думаю, что у меня есть решение, которое немного чище, без использования скрытого iframe, и вам даже не понадобится запрос ajax для этого! Использование заголовков PHP, как указано в принятом ответе в файле download.php

 <?php //download.php /* All your verification code will go here */ header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=".$_GET['file']); header("Content-Transfer-Encoding: binary "); 

И на конце JS просто

 function download(filename){ window.location="http://whateveryoursiteis.com/download.php?file="+filename; } 

Работает как шарм: O