Как загрузить файл при нажатии на имя файла с помощью PHP?

У меня есть список информации, в которой есть поле, где имя файла гиперссылки. Я хочу, чтобы пользователь загружал этот файл, когда он нажимает на него.

Итак, как загрузить файл при нажатии на имя файла с помощью 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>

Ответ 1

Итак, как загрузить файл при нажатии на имя файла с помощью PHP?

Самый простой способ - связать с ним.

<a href="download.php?......" target="_blank">DMS.doc</a>

Ответ 2

Для этого вам не нужен AJAX, вы даже не можете делать то, что хотите, используя AJAX. Если вы хотите обфускать URL-адрес файла, замените его следующим образом:

function download(path,val) {
    window.location.href = path+"download.php?val="+val;
};

Ответ 3

     // 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 {