是否可以使用php渲染/输出图像并强制下载,而不将图像保存到服务器?
我查看了http://php.net/manual/en/function.imagejpeg.php,可以使用imagejpeg();
呈现图片并保存图片
我尝试在服务器上创建保存图像的超链接,并使用download
强制下载。
只是想知道是否有更简单/更简单的方法?
答案 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;
}