简体   繁体   English

php图片下载链接不起作用

[英]Php Image Download Link not Working

I already try to download image using below code but it work in localhost in my computer but when site live on hosting service then when i click download link the show a message 我已经尝试使用下面的代码下载图像,但是它可以在我的计算机上的localhost中运行,但是当站点驻留在托管服务上时,则当我单击下载链接时会显示一条消息
Headers Sent 标头已发送

not download image.Please give me solve. 无法下载图片。请给我解决。

link use: 链接使用:

print'<p><a href="?u=download&file=nplace_image/'. $rs[$i][16].'" class="btn"><i class="icon-cloud-download"></i> Download</a></p>';

my code: 我的代码:

<?php

$file = $_GET['file'];

download_file($file);

function download_file( $fullPath ){

  // Must be fresh start
  if( headers_sent() )
    die('Headers Sent');

  // Required for some browsers
  if(ini_get('zlib.output_compression'))
    ini_set('zlib.output_compression', 'Off');

  // File Exists?
  if( file_exists($fullPath) ){

    // Parse Info / Get Extension
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);

    // Determine Content Type
    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"); // required
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false); // required for certain browsers
    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');

}
?>

Looks like something is output before executing your download code. 在执行下载代码之前,似乎已输出某些内容。 So it shows this message. 因此它显示此消息。 You can check if your server logs anything in error log file. 您可以检查服务器是否在错误日志文件中记录了任何内容。 Also you can try a ob_clean before calling the download_file function. 另外,您可以在调用download_file函数之前尝试使用ob_clean。

use the below code: 使用以下代码:

    <?php
    if(isset($_GET['file'])) {
    $file = isset($_GET['file'])?$_GET['file']:'';

    download_file($file);
    }

    function download_file( $fullPath ){

      // Must be fresh start
      if( headers_sent() )
        die('Headers Sent');

      // Required for some browsers
      if(ini_get('zlib.output_compression'))
        ini_set('zlib.output_compression', 'Off');

      // File Exists?
      if( file_exists($fullPath) ){

        // Parse Info / Get Extension
        $fsize = filesize($fullPath);
        $path_parts = pathinfo($fullPath);
        $ext = strtolower($path_parts["extension"]);

        // Determine Content Type
        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"); // required
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: private",false); // required for certain browsers
        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 print'<p><a href="?u=download&file=noteII007.jpg" class="btn"><i class="icon-cloud-   download"></i> Download</a></p>';?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM