当前位置:首页 > PHP

php实现图片下载

2026-01-29 03:50:22PHP

使用 file_get_contents 和 file_put_contents 下载图片

通过 file_get_contents 读取远程图片内容,再用 file_put_contents 保存到本地。适合小文件下载,简单直接。

$imageUrl = 'https://example.com/image.jpg';
$savePath = 'downloaded_image.jpg';

$imageData = file_get_contents($imageUrl);
if ($imageData !== false) {
    file_put_contents($savePath, $imageData);
    echo "图片下载成功";
} else {
    echo "下载失败";
}

使用 cURL 下载图片

cURL 提供更灵活的选项,适合大文件或需要更多控制的场景。可设置超时、跟随重定向等参数。

$imageUrl = 'https://example.com/image.jpg';
$savePath = 'downloaded_image.jpg';

$ch = curl_init($imageUrl);
$fp = fopen($savePath, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

处理文件名和路径

动态生成保存路径,避免文件名冲突。从 URL 提取文件名或使用时间戳命名。

php实现图片下载

$imageUrl = 'https://example.com/image.jpg';
$filename = basename($imageUrl); // 或使用 uniqid() 生成唯一名
$savePath = 'downloads/' . $filename;

// 确保目录存在
if (!file_exists('downloads')) {
    mkdir('downloads', 0777, true);
}

添加错误处理和验证

增加 HTTP 状态码检查,验证是否为图片类型,避免保存非图片内容。

$headers = get_headers($imageUrl, 1);
if (strpos($headers['Content-Type'], 'image/') === false) {
    die("URL 不是有效的图片");
}

$httpCode = substr($headers[0], 9, 3);
if ($httpCode != 200) {
    die("图片不可访问");
}

分块下载大文件

对于大文件,采用分块读写方式减少内存占用。

php实现图片下载

$source = fopen($imageUrl, 'rb');
$dest = fopen($savePath, 'wb');

while (!feof($source)) {
    fwrite($dest, fread($source, 8192));
}

fclose($source);
fclose($dest);

用户代理和 Referer 设置

某些网站会验证请求头,需模拟浏览器访问。

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
curl_setopt($ch, CURLOPT_REFERER, 'https://example.com');

安全性注意事项

验证 URL 是否为真实图片地址,避免 SSRF 攻击。

$parsedUrl = parse_url($imageUrl);
if (!in_array($parsedUrl['host'], ['trusted-domain.com', 'cdn.example.net'])) {
    die("不允许的域名");
}

标签: 图片下载php
分享给朋友:

相关文章

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…