代码之家  ›  专栏  ›  技术社区  ›  jmiller

如何使用php输出图像并下载

  •  0
  • jmiller  · 技术社区  · 6 年前

    是否可以使用php渲染/输出图像并强制下载,而不将图像保存到服务器?

    我已经看过了 http://php.net/manual/en/function.imagejpeg.php 并且可以使用渲染图像并保存图像 imagejpeg();

    我尝试在服务器上创建指向已保存图像的超链接,并使用强制下载 download

    只是想知道是否有更简单的方法?

    2 回复  |  直到 6 年前
        1
  •  4
  •   rollstuhlfahrer    6 年前

    您可以使用 imagejpeg() 将图像输出到浏览器。( Docs )

    // Set the content type header - in this case image/jpeg
    header('Content-Type: image/jpeg');
    
    // Output the image
    imagejpeg($image);
    

    当您省略的第二个参数 imagejpeg() 或将其设置为 null 图像将发送到浏览器(以二进制形式)。

    要在浏览器中触发下载,需要设置另一个标题值:

    header('Content-Disposition: attachment; filename="YourFilenameHere.jpg"');
    

    这会告诉浏览器,它应该将文件下载为 YourFilenameHere.jpg

        2
  •  1
  •   Amir Hajiha    6 年前

    如果文件位于其他目录中,也可以使用此代码:

     $file = 'test.png';
     $filepath = "images/" . $file;
    
    
        if(file_exists($filepath)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($filepath));
            flush(); 
            readfile($filepath);
            exit;
        }