Гиперссылка работает - HTML-форма с кнопкой Отправить не работает - PullRequest
0 голосов
/ 10 января 2009

У меня есть PHP-скрипт, который выдвигает заголовки, чтобы разрешить загрузку файла. Этот скрипт прекрасно работает, когда он вызывается по гиперссылке или через браузер, используя ссылку. Вот как это выглядит:

<a href="download.php?file=test.mp3&properFilename=Testing File">Download</a>

Я хочу, чтобы это была кнопка (sbumit), поэтому я сделал это:

<form action="download.php?file=test.mp3&properFilename=Testing File" method="get">
<input type="submit" value="Download Audio" name="download"/>
</form>

Однако это не работает. Когда я нажимаю на него. Он инициирует диалоговое окно загрузки, но имя файла пустое. Имя файла отображается как «.mp3» (без кавычек)! Эта же ссылка через гиперссылку показывает точное имя файла «Файл тестирования». Почему это?? Вот фрагмент кода PHP:

$filename = '../'.$_GET['file'];
$properFilename = $_GET['properFilename'].'.mp3';

header("Content-Disposition: attachment; filename=\"".basename($properFilename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();   

Спасибо за любую помощь . Это сводило меня с ума весь день и ночь !!!

Ответы [ 2 ]

5 голосов
/ 10 января 2009

Я думаю, что URL-адрес действия был urlencoded, а параметры GET с жестким кодом не отправляются.

Вы можете попытаться установить URL-адрес действия просто для скачивания .php и иметь два скрытых поля, содержащих параметры "file" и "ProperFilename", например:

<form action="download.php" method="GET">
  <input type="submit" value="Download Audio" name="download"/>
  <input type="hidden" name="file" value="test.mp3" />
  <input type="hidden" name="properFilename" value="Testing File" />
</form>

Или вы можете использовать тип ввода = "кнопка", даже без формы:

<input type="button" 
      onclick="location.href='download.php?file=test.mp3&properFilename=Testing File';" 
      value="Download"/>

Или кнопка изображения:

<a href="download.php?file=test.mp3&properFilename=Testing File">
   <img src="IMAGE_BUTTON_HERE" />
</a>
0 голосов
/ 10 января 2009

Вместо использования , как предлагает CMS, вы также можете использовать элемент button (который на самом деле является семантически правильным здесь, поскольку вы не в форме)

<button onclick="document.location = 'bla.php?f=vars'">Download</button>

Еще лучше было бы переместить событие onclick из кнопки в отдельный файл javascript.

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