У меня есть список информации, в которой есть поле, где имя файла гиперссылки. Я хочу, чтобы пользователь загружал этот файл, когда он нажимает на него.
так, как загрузить файл при нажатии на имя файла с помощью PHP?
Я попробовал это с помощью ajax, код которого приведен ниже, но я не получаю никакого загруженного файла.
download.php
$filename = $_GET['val']; // Fetch the file info. $filePath = $_SERVER['DOCUMENT_ROOT'] . "/dfms/images/docs/".$filename; if(file_exists($filePath)) { $fileName = basename($filePath); $fileSize = filesize($filePath); // Output headers. header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".$fileSize); header("Content-Disposition: attachment; filename=".$fileName); // Output file. readfile ($filePath); exit(); } else { die('The provided file path is not valid.'); }
функция javascript
<script> function Inint_AJAX() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript alert("XMLHttpRequest not supported"); return null; }; function download(path,val) { var req = Inint_AJAX(); req.open("GET", path+"download.php?val="+val); //make connection //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1"); // set Header req.send(null); //send value req.onreadystatechange = function () { if (req.readyState==4) { if (req.status==200) { } } }; } </script>
ссылка для скачивания
<a href="javascript:download('http://localhost/project/images/','DMS.doc');">DMS.doc</a>
так, как загрузить файл при нажатии на имя файла с помощью PHP?
Самый простой способ – связать с ним.
<a href="download.php?......" target="_blank">DMS.doc</a>
Для этого вам не нужен AJAX, вы даже не можете делать то, что хотите, используя AJAX. Если вы хотите обфускать URL-адрес файла, замените его следующим образом:
function download(path,val) { window.location.href = path+"download.php?val="+val; };
// Fetch the file info. $filePath = $_SERVER['DOCUMENT_ROOT'] . "/dfms/images/docs/".$filename; if(file_exists($filePath)) { $fileName = basename($filePath); $fileSize = filesize($filePath); // Output headers. header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".$fileSize); header("Content-Disposition: attachment; filename=".$fileName); // Output file. readfile ($filePath); exit(); } else {