Предположим, я хочу создать ссылку для загрузки и поместить ее в тег <a>
.PHP Создание ссылки для загрузки
мой PHP скрипт:
function download_link(){
$this_id = "d"; //this is the name of file from server
$original_filename = 'xample.pdf'; //This come from database
$ext = pathinfo($original_filename, PATHINFO_EXTENSION);
$file = '../uploads/'.$this_id.'.'.$ext;
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/'.$ext);
header('Content-Disposition: attachment; filename='.$original_filename);//Rename the file with its original filename
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
return readfile($file);//Here where i want to return the generated url
}
return '#'; //Or return nothing if file doesn't exist
echo '<a href="'.function download_link().'"></a>'; //And put it here, the generated url
теперь, мое расположение каталога ../uploads/
.
Я ожидаю результата вроде: <a href="www.myserver.com/whatever the new url is"></a>
поэтому, когда пользователь щелкнет по этому тегу, файл будет загружен. но вместо этого, когда я перезагружаю страницу, она автоматически загружается без нажатия кнопки загрузки, которая является тегом <a>
.
note:
Я пытаюсь переименовать имя файла при нажатии на загрузку botton. Я знаю, что в моей логике есть проблема. может быть, это можно сделать с помощью JQUERY? или AJAX? im искал решение, но не нашел ответа.
вот что я сделал с JQuery AJAX:
HTML тег
<a id="server_name_file_name">download</a>
JQuery AJAX:
$('a').click(function(e) {
e.preventDefault();
var id = $(this).attr('id');
$.ajax({
type: 'POST',
url: 'download.php',
data: { server_file_name: id,},
success: function(response) {
if(response == 1){
alert("Unable to download, Maybe the file is corrupted. Please try to reload the page.");
}else{
window.location.href = response;
return false;
}
}})
});
download.php
$this_id = $_POST['server_file_name'];
$original_filename = 'xample.pdf'; //This come from database
$ext = pathinfo($original_filename, PATHINFO_EXTENSION);
$file = '../uploads/'.$this_id.'.'.$ext;
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/'.$ext);
header('Content-Disposition: attachment; filename='.$original_filename);//Rename the file with its original filename
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
echo readfile($file);//Here where i want to return the generated url
exit();
} die('1');
, но не работает.
Кто-нибудь может мне помочь?
Спасибо !!!!
'' не работает' является таким ужасным описанием ошибки ... –
У вас нет ссылки и скачиваний, сгенерированных в той же функции, есть функция для создания ссылки, а затем, когда ссылка нажата, вызовите другую которая генерирует загрузку и выводит диалоговое окно 'open with' или' save as'. – llanato