详解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 相关文章推荐
初探PHP5
Oct 09 PHP
echo, print, printf 和 sprintf 区别
Dec 06 PHP
php 生成文字png图片的代码
Apr 17 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
php中长文章分页显示实现代码
Sep 29 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php查找任何页面上的所有链接的方法
2013/12/03 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
PHP如何使用Memcached
2016/04/05 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
Python中有趣在__call__函数
2015/06/21 Python
python样条插值的实现代码
2018/12/17 Python
python根据url地址下载小文件的实例
2018/12/18 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
《郑和远航》教学反思
2014/04/16 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
git stash(储藏)的用法总结
2022/06/25 Servers