首页 >

PHP文件上传处理案例分析

后端开发|php教程PHP文件上传处理案例分析
PHP文件上传
后端开发-php教程
asp 表格 源码,vscode 内容更新,ubuntu vmw,tomcat超过45,易语言sqlite查找用法,省市区地址选择插件,斗鱼tv前端用的什么框架,爬虫怎么获取网站数据安全,php比较字符串大小,南京seo哪个好,移动端web网站模板,有图片滚动的网页模板,安卓源码模板修改lzw
最近遇到一个事,把自己坑了好久,我想说说我开始的想法
微信电子名片制作源码,ubuntu从新启动网卡,tomcat先看配置文件吗,人脑分爬虫脑,php获取明天的时间戳,金华seo费用lzw
PHP的上传机制封装的很完全,基本几行代码就能实现,他的实现流程是这样的
社区网页源码,ubuntu下载解压工具,tomcat7 配置文件,爬虫停用词,原生php查询数据库,莱州seo优化lzw
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文件上传处理案例分析
  • php ajax实现文件上传进度条【PHP】
  • php ajax实现文件上传进度条【PHP】 | php ajax实现文件上传进度条【PHP】 ...

    PHP文件上传处理案例分析
  • php文件上传的例子及参数详解【PHP】
  • php文件上传的例子及参数详解【PHP】 | php文件上传的例子及参数详解【PHP】 ...

    PHP文件上传处理案例分析
  • 适用于初学者的简易PHP文件上传类
  • 适用于初学者的简易PHP文件上传类 | 适用于初学者的简易PHP文件上传类 ...