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中使用redis队列操作实例代码
Feb 07 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
PHP实现的装箱算法示例
Jun 23 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 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
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
js实现烟花特效
2020/03/02 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
python 创建弹出式菜单的实现代码
2017/07/11 Python
python实现多张图片拼接成大图
2019/01/15 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
大专应届生个人的自我评价
2013/11/21 职场文书
小学科学教学反思
2014/01/26 职场文书
公司拓展活动方案
2014/02/13 职场文书
少儿节目主持串词
2014/04/02 职场文书
创先争优个人承诺书
2014/08/30 职场文书
九年级化学教学反思
2016/02/22 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏