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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP答题类应用接口实例
Feb 09 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
PHP的Yii框架中Model模型的学习教程
Mar 29 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 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 session 写入数据库
2016/02/13 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
28个JS验证函数收集
2010/03/02 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
毕业寄语大全
2014/04/09 职场文书
土地转让协议书范本
2014/04/15 职场文书
应届生面试求职信
2014/07/02 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android