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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
php表单处理操作
Nov 16 PHP
php获取是星期几的的一些常用姿势
Dec 15 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中Date获取时间不正确怎么办
2008/06/05 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
thinkphp分页实现效果
2016/10/13 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
python开发中module模块用法实例分析
2015/11/12 Python
Mac 上切换Python多版本
2017/06/17 Python
Python socket模块方法实现详解
2019/11/05 Python
Python ORM编程基础示例
2020/02/02 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
文明教师事迹材料
2014/01/16 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
还款承诺书范文
2014/05/20 职场文书
医院义诊活动总结
2014/07/04 职场文书
2014年党委工作总结
2014/11/22 职场文书
党校学习党性分析材料
2014/12/19 职场文书
奔腾年代观后感
2015/06/09 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书