详解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 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
php的dl函数用法实例
Nov 06 PHP
PHP发送短信代码分享
Aug 11 PHP
两款万能的php分页类
Nov 12 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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 ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php 基础函数
2017/02/10 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
详解Django配置优化方法
2019/11/18 Python
Django的CVB实例详解
2020/02/10 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
2013年高中生自我评价
2013/10/23 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
财产公证书
2014/04/10 职场文书
春秋淹城导游词
2015/02/11 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
2015年国培研修感言
2015/08/01 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js