PHP抓取远程图片(含无后缀)类库实现
201 浏览量
更新于2024-09-04
收藏 78KB PDF 举报
"这篇教程详细介绍了如何使用PHP抓取远程图片,特别是对于那些不带后缀名的图片,如微信头像。作者在实践中遇到这个问题并解决了它,将解决方案封装成一个类,供其他人参考学习。"
在进行PHP远程图片抓取时,遇到的一个挑战是某些图片URL可能不包含文件后缀,如微信头像。传统的HTTP GET请求或file_get_contents函数可能无法正确处理这种情况。为了克服这个问题,我们可以创建一个自定义类,如教程中的`GrabImage`,来进行特殊处理。
首先,我们需要在PHP项目中创建一个`GrabImage`类,定义一些关键属性。这些属性包括:
1. `$img_url`: 存储待抓取的远程图片URL。
2. `$file_name`: 保存文件的基本名称,不包括扩展名,以便在需要时灵活更换扩展名。
3. `$extension`: 图片的文件扩展名,例如jpg、png等,需要根据实际URL动态获取。
4. `$file_dir`: 图片在本地存储的相对路径,通常相对于PHP入口文件。
5. `$save_dir`: 用于存储到数据库的路径,通常是日期加文件名的组合,便于系统迁移时更改路径。
接着,我们需要一个公共方法`getInstances`,用于接收远程图片URL和本地保存路径,并将它们赋值给对应的属性。同时,该方法会生成一个带有日期的保存目录结构,如`201610/19/`。
在保存图片之前,需要确保目标目录存在。为此,我们需要一个`mkdir`或者`is_dir`结合`mkdir`的方法来创建目录。这确保了即使目录尚未创建,程序也能在保存图片前创建好相应的路径。
然后,我们需要实现实际的图片下载功能。这可以通过发送HTTP请求,或者使用file_get_contents来完成。对于不带后缀名的图片,我们需要从响应的HTTP头信息中提取MIME类型,从而推断出正确的文件扩展名。例如,如果MIME类型是image/jpeg,则扩展名为.jpg。
下载完成后,使用`file_put_contents`将图片内容写入本地文件,文件名由基本名称`$file_name`加上推断出的扩展名`$extension`组成。同时,确保文件权限设置允许读取和访问。
最后,如果需要将图片路径存储到数据库,应使用`$save_dir`,而不是`$file_dir`,因为它包含了日期和文件名,更适合作为数据库存储的唯一标识。
这个教程提供了处理无后缀名远程图片抓取的完整流程,从创建类、定义属性和方法,到实际的图片下载和存储,以及目录创建和路径管理,对PHP开发者来说是非常实用的参考资料。
2021-10-09 上传
2023-06-10 上传
2023-06-06 上传
2024-02-05 上传
2023-05-11 上传
2023-05-19 上传
2023-07-28 上传
2023-06-03 上传
2023-09-14 上传
weixin_38606404
- 粉丝: 2
- 资源: 874
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展