详解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打造属于自己的MVC框架
Mar 07 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php引用传值实例详解学习
Nov 06 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 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 Memcached应用实现代码
2010/02/08 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
php生成二维码
2015/08/10 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
document.all与WEB标准
2020/05/13 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
javascript基本算法汇总
2016/03/09 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
JS实现小星星特效
2019/12/24 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
python调用c++传递数组的实例
2019/02/13 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
python与idea的集成的实现
2020/11/20 Python
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
产品质量保证书
2014/04/29 职场文书
电视节目策划方案
2014/05/16 职场文书
2014年调度员工作总结
2014/11/19 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
书法社团活动总结
2015/05/07 职场文书
男人帮观后感
2015/06/18 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL