要实现将图片直接下载而不是显示的功能,可以通过以下步骤来实现:
-
创建一个下载链接,网站需要提供一个下载链接给用户,用户点击之后即可下载图片。下载链接需要指向一个用于下载图片的php文件。
-
在php文件中添加下面的代码,将图片转换为可下载的文件并将其发送给用户:
```php
```
- 上面的代码中,
$file
变量中存储的是要下载的文件路径,可以通过$_GET
参数来获取 Content-Type
告诉浏览器,下载文件的类型是二进制流文件,即网页强制要求下载Content-Length
设置下载文件的大小,以字节为单位-
Content-Disposition
告诉浏览器该下载文件的名称和下载方式 -
在下载链接中加入要下载图片的文件路径,这样php就能获取到正确的文件路径并进行下载。示例如下:
html
<a href="download.php?file_path=/path/to/image.png">下载图片</a>
下面是两个php代码示例,它们能够将图片直接下载到本地。
示例1:
<?php
if(isset($_GET['url'])){
$url = $_GET['url'];
$file_name = basename($url);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file_name);
readfile($url);
}
?>
示例2:
<?php
if(isset($_GET['img'])){
$imageName = $_GET['img'];
$local_image = "upload/".$imageName; // 所下载的图片文件所在的路径
$imginfo = getimagesize($local_image); //获取图片的信息
header("Content-Type: {$imginfo['mime']}"); //定义图片的mime类型
header("Content-Disposition: attachment; filename={$imageName}"); //告诉浏览器,这是一个需要下载的文件
header('Content-Length: '. filesize($local_image)); //告诉浏览器,文件大小
readfile($local_image); //读取文件
exit();
}
?>
这两个实例,基本上都是将图片的路径,赋值到$url
或$imageName
变量上,并通过header
告诉浏览器该图片文件是要下载的,直接强制下载。唯一的区别在于实例2还提供了一些关于图片信息的头部信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php实现改变图片直接打开为下载的方法 - Python技术站