Как убрать перенаправление при скачке файла JS PHP HTML


2

Есть ссылка: http://www.**.ru/admin.php?download=eadb8140e3c220f502517e991f1d22df

через параметр download происходит скачка файла с именем eadb8140e3c220f502517e991f1d22df, так вот при клике на ссылку из списка открывается окно загрузки, и происходит перенаправление на пустую страницу.

Как сделать чтобы перенаправление не происходило, все время оставался на прежней странице со списком всех файлов.

Приложил снимки с экрана

alt text

Можно конечно добавить атрибут target="_blank", но это не то

  •  1457
  •  1
  • 10 янв 2012 2012-01-10 13:02:05
с моего сайта — 10 янв 20122012-01-10 12:57:48.000000
Это с вашего сайта или чужого ? — 10 янв 20122012-01-10 10:54:44.000000

1 ответ

0

Первое, что приходит на ум, так это использовать скрытый iframe.

<iframe id="hide_if" name="hide_if"  style="display:none;"></iframe>
<a href="dl.php?dl=filename.jpg" target="hide_if">Download</a>

Файл dl.php

$filename = "path_to_file/".$_GET[dl];

 // нужен для Internet Explorer, иначе Content-Disposition игнорируется
if(ini_get(zlib.output_compression))
  ini_set(zlib.output_compression, Off);

$file_extension = strtolower(substr(strrchr($filename,"."),1));

if( $_GET[dl] == "" )
{
          echo "ОШИБКА: не указано имя файла.";
          exit;
} elseif ( ! file_exists( $filename ) ) // проверяем существует ли указанный файл
{
          echo "ОШИБКА: данного файла не существует.";
          exit;
};
switch( $file_extension )
{
          case "pdf": $ctype="application/pdf"; break;
          case "exe": $ctype="application/octet-stream"; break;
          case "zip": $ctype="application/zip"; break;
          case "doc": $ctype="application/msword"; break;
          case "xls": $ctype="application/vnd.ms-excel"; break;
          case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
          case "mp3": $ctype="audio/mp3"; break;
          case "gif": $ctype="image/gif"; break;
          case "png": $ctype="image/png"; break;  
          case "jpeg":
          case "jpg": $ctype="image/jpg"; break;
          default: $ctype="application/force-download";
}
header("Pragma: public"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // нужен для некоторых браузеров
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename="".basename($filename)."";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename)); // необходимо доделать подсчет размера файла по абсолютному пути
readfile("$filename");
exit();
  • 10 янв 2012 2012-01-10 13:37:44
Благодраю, сейчас попробую :) — 11 янв 20122012-01-11 08:01:55.000000