drhs13583567608 2015-09-01 10:42
浏览 98
已采纳

如何使用PHP和Mysql DB下载文件

I am new to this and I am really stuck on how to download a file I have managed to upload on my local server.

My uploaded script is -

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";

            }

        }
 }

}
  • 写回答

3条回答 默认 最新

  • duanaidang6197 2015-09-01 11:17
    关注

    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');
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站