详解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 相关文章推荐
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
PHP防止跨域提交表单
Nov 01 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
django中的ajax组件教程详解
Oct 18 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
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
JavaScript事件对象event用法分析
2018/07/27 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
python str与repr的区别
2013/03/23 Python
python使用append合并两个数组的方法
2015/04/28 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
TensorFlow的权值更新方法
2018/06/14 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
促销活动策划方案
2014/01/12 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
公司营业员的自我评价
2014/03/04 职场文书
保密协议书范本
2014/04/22 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
个园导游词
2015/02/04 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers