如何使用PHP输出图像和下载

时间:2018-04-05 13:36:22

标签: php image download

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

我查看了http://php.net/manual/en/function.imagejpeg.php,可以使用imagejpeg();呈现图片并保存图片

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用function update(data) { var rows = d3.select("body").selectAll(".row").data(data); // bind data rows.exit().remove(); // remove old nodes rows.enter().append("div") // add new nodes .classed("row", true) .merge(rows) // merge new with existing and update all .each(function(d){ let el = d3.select(this); let cells = el.selectAll(".cell").data(d); // bind data cells.exit().remove(); //remove old cells.enter().append("div") //enter new .classed("cell", true) .merge(cells) //merge .text(d=>d) // set text on all nodes. }); } 将图像输出到浏览器。 (Docs

imagejpeg()

当您省略// 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"');

答案 1 :(得分:0)

如果文件在另一个目录中,您也可以使用以下代码:

 $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;
    }