Как загрузить файл с помощью PHP и Mysql DB

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

Мой загруженный скрипт –

require_once ('dbcon.php'); if(isset($_POST['log'])){ foreach($_FILES['files']['tmp_name'] as $key => $name_tmp){ $file = $_FILES['files']['name'][$key]; $tmpnm = $_FILES['files']['tmp_name'][$key]; $type = $_FILES['files']['type'][$key]; $size = $_FILES['files']['size'][$key]; $dir = "file/".$file; $move = move_uploaded_file($tmpnm, $dir); if ($move){ $query = ("INSERT into dfile VALUES(null,'$file','$type','$size')"); $result = $dbLink->query($query); if($result){ echo "<h4>Upload Complete</h4></br>"; }else{ echo "Error Table DB"; } } } } 

Solutions Collecting From Web of "Как загрузить файл с помощью PHP и Mysql DB"

SomePage.php

 <a href="download.php?FileNo=<?echo $FileNo;?>">File Name</a> 

download.php

 $FileNo=$_GET['FileNO']; //Use Mysql Query to find the 'full path' of file using $FileNo. // I Assume $FilePaths as 'Full File Path'. download_file($FilePaths); function download_file( $fullPath ) { if( headers_sent() ) die('Headers Sent'); if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); if( file_exists($fullPath) ) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { 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 "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($fullPath)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$fsize); ob_clean(); flush(); readfile( $fullPath ); } else die('File Not Found'); } к $FileNo=$_GET['FileNO']; //Use Mysql Query to find the 'full path' of file using $FileNo. // I Assume $FilePaths as 'Full File Path'. download_file($FilePaths); function download_file( $fullPath ) { if( headers_sent() ) die('Headers Sent'); if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); if( file_exists($fullPath) ) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { 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 "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($fullPath)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$fsize); ob_clean(); flush(); readfile( $fullPath ); } else die('File Not Found'); } 

Вы делаете это, устанавливая заголовки:

 <?php $file = $_GET['file']; $dir = ''; if(isset($_GET['file']) && file_exists($dir . $file)) { $finfo = new finfo(FILEINFO_MIME_TYPE); $type = $finfo->file($file); // get MIME-Type header("Content-Type: " . $type); header("Content-Disposition: attachment; filename=\"" . $file . "\""); readfile($dir . $file); } 

Убедитесь, что Content-Type является MIME-типом . Вы можете поместить этот код в отдельный файл dl.php и вызвать его так:

 <a href="dl.php?file=path/to/your/file.txt">Download</a> 

Путь зависит от структуры ваших скриптов, но в основном он будет выглядеть следующим образом:

 while($row = $result->fetch_assoc()) { echo " <tr> <td>{$row['comp']}</td> <td>{$row['expire']}</td> <td>{$row['file']}</td> <td>{$row['size']}</td> <td> <a download href=\"file/{$row['file']}\">Download this file</a> </td> </tr>"; }