详解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
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
php发送邮件的问题详解
Jun 22 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php7 错误处理机制修改实例分析
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
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
实例解析Array和String方法
2016/12/14 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
Python入门篇之数字
2014/10/20 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
应届生法律顾问求职信
2013/11/19 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
公司授权委托书样本
2014/09/15 职场文书
感谢信怎么写
2015/01/21 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
校长新学期寄语2016
2015/12/04 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript