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 相关文章推荐
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
php面向对象程序设计入门教程
Jun 22 PHP
PHP调用接口API封装的例子
Oct 11 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 PHP
php将xml转化对象的实例详解
Nov 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
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
django云端留言板实例详解
2019/07/22 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
python用什么编辑器进行项目开发
2020/06/17 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
家长给老师的道歉信
2014/01/13 职场文书
化妆品促销方案
2014/02/24 职场文书
业务员简历自我评价
2014/03/06 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
初中团支书竞选稿
2015/11/21 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python