PHP文件上传处理案例分析


Posted in PHP onOctober 15, 2016

本文实例讲述了PHP文件上传处理的方法。分享给大家供大家参考,具体如下:

最近遇到一个事,把自己坑了好久,我想说说我开始的想法

PHP的上传机制封装的很完全,基本几行代码就能实现,他的实现流程是这样的

UPLOAD到文件到临时目录中?>使用move_uploadde_file()到指定的目录

这就是PHP上传流程,或者你在中途再进行一些验证。例如判断是不是通过upload方式提交的文档,或者文件的扩展是不是我们允许的

等等一系列验证。我给出简单的代码也算是抛砖引玉了。

$targetFolder = '/uploads'; // 定义根目录
if (!empty($_FILES)) {
  $tempFile = $_FILES['Filedata']['tmp_name'];
if(is_uploaded_file($tempFile))
{
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
  $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
  $fileTypes = array('jpg','jpeg','gif','png'); // 允许的后缀扩展
  $fileParts = pathinfo($_FILES['Filedata']['name']);
  if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo '1';
  } else {
    echo '非法上传文档.';
  }
}else
{
  echo "非法上传文件";
}
}

上面的这种方式基本就满足了文件上传。但我需要的不是这样的。

PHP文件上传处理案例分析

上传功能

需求:先点击上传文档,然后选择上传文件,JS上传后会返回一个值,显示当前时间戳问名称的文件在文档名称这个框框中。

然后点击提交后,提交表单。

服务器处理提交的表单,对上传的文件进行重命名。

问题也随之而来了,服务器是IIS的,然后它是用的映射的方式实现的虚拟跟目录。

这样的话$_SERVER[‘DOCUMENT_ROOT']就不在PHP站点的根目录

虽然完成了上传的功能,但无法下载这个文件。从服务器的安全考虑,还是打算把文件放在PHP站点内。

然后我就陷进了一个思维局限中。

再仔细想一想:

为何我不用实现PHP的上传机制的方式在重复一次。

PHP不是将文件先放到临时目录里面吗?然后我为嘛假设JS上传成功后的目录也是一个临时目录,

然后在再一次提交表单的时候进行文件复制。到指定的目录这样就完成了需要的功能。

PHP有一个文件复制函数Copy(); 然后在配合rename()函数。这样就可以完成上传后文件的第二次移动和重命名了。

注意:在window平台下如果复制一个零字节的文件,copy() 将返回 FALSE ,但文件也会被正确复制。

然后PHP在文件处理上,积极的参考了Liunx的文件处理机制。PHP的文件操作效率,这跟I/O对写和操作系统有关。

总结:其实解决问题的方式很多,而且不要给自己画圈从而限定自己的思维。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
mongodb和php的用法详解
Mar 25 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 #PHP
基于php判断客户端类型
Oct 14 #PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 #PHP
php生成与读取excel文件
Oct 14 #PHP
基于PHP实现用户注册登录功能
Oct 14 #PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 #PHP
php车辆违章查询数据示例
Oct 14 #PHP
You might like
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Django发送html邮件的方法
2015/05/26 Python
python 爬取微信文章
2016/01/30 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python socket 套接字实现通信详解
2019/08/27 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
jupyter实现重新加载模块
2020/04/16 Python
python中yield的用法详解
2021/01/13 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
民生工程实施方案
2014/03/22 职场文书
中学生演讲稿
2014/04/26 职场文书
班级旅游计划书
2014/05/03 职场文书
捐款活动总结
2014/08/27 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技