详解PHP素材图片上传、下载功能


Posted in PHP onApril 12, 2019

 这里的下载是生成 zip 包进行下载,所以需要 PHP 的ZipArchive ()类,使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释。并且不包括 oss 之类的三方

上传

上传就很简单了,PHP 自带的 move_uploaded_file()函数就可以使用我们简单的文件上传了。

我们只需要把文件的路径存到数据库方便我们下载或展示时使用就 OK了。

这里需要注意上传的路径和文件名尽量不要包括中文。

下载

下载文件我们需要临时生成一个服务器的 zip 包,然后设置请求头最后删除服务器生成的临时 zip 包就 OK 了。下面直接上代码:

$filename = rand(0, 999).'.zip';
$zip = new ZipArchive();
/*
* $zip->open 这个方法的第一参数是要处理的文件名
* 第二个表示处理模式。
* ZipArchive::CREATE,系统会往原来的zip 文件内追加内容
* ZipArchive::OVERWRITE 是防止系统多次添加同一个文件到 zip 中
*/
$zip->open($filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// 添加文件内容到zip 文档
$zip->addFromString(/*文件名称*/, /*文件内容*/);

// 设置请求头,下载压缩包,并且删除服务器上的临时 zip 文件
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-length: ".$filename); // 后面要拼接你的zip 文件名
Header("Content-Disposition: attachment; filename=images.zip"); // 这里的 filename 是你要下载的 zip 包的名称

// 一次只传输1024个字节的数据给客户端
$buffer = 1024;
while(!feof($file)) {
 // 将文件读入内存
 $file_data = fread($file, $buffer);
 // 每次向客户端回送1024个字节
 echo $file_data;
}

fclose($file);
unlink($filename); // 删除文件
exit;

以上所述是小编给大家介绍的PHP图片上传下载功能详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
php实现paypal 授权登录
May 28 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 PHP
laravel 事件/监听器实例代码
Apr 12 #PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 #PHP
laravel使用Faker数据填充的实现方法
Apr 12 #PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 #PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 #PHP
PHP中的Iterator迭代对象属性详解
Apr 12 #PHP
PHP中str_split()函数的用法讲解
Apr 11 #PHP
You might like
cache_lite试用
2007/02/14 PHP
php session 检测和注销
2009/03/16 PHP
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
swiper自定义分页器使用方法详解
2020/09/14 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
详解Python3中yield生成器的用法
2015/08/20 Python
python爬虫爬取网页表格数据
2018/03/07 Python
python在文本开头插入一行的实例
2018/05/02 Python
python贪吃蛇游戏代码
2020/04/18 Python
python中调试或排错的五种方法示例
2019/09/12 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
市场营销战略计划书
2014/05/06 职场文书
法院授权委托书范文
2014/08/02 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2014年关工委工作总结
2014/11/17 职场文书
授权委托书
2015/01/28 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python