本文展示了上传PHP文件的方法。分享给大家参考,如下:
最近遇到一件事,把自己坑了很久。我想谈谈我最初的想法
PHP的上传机制是完全封装的,只需要几行基本代码就可以实现。他的实现流程是这样的
上传到文件到临时目录使用move _ uploadde _ file()到指定的目录
这是PHP上传过程,或者你可以在中间做一些验证。比如判断文档是上传提交的,还是我们允许文件扩展的。
等待一系列验证。我给出了一个简单的代码,这是一个有价值的介绍。
$ TargetFolder=“/uploads”;//定义根目录if(!空($ _ 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 ');//允许的后缀扩展名$ file parts=path info($ _ files[' file data '][' name ']);if (in_array($fileParts['扩展名'],$ fileTypes)){ move _ uploaded _ file($ tempFile,$ target file);回声“1”;} else {echo '非法上传的文档。}}else{ echo '非法文件上传';}}以上方法基本满足文件上传。但这不是我需要的。
上传功能
要求:先点击上传文档,然后选择上传文件。JS上传后会返回一个值,在文档名称框中会显示当前时间戳名称的文件。
然后单击提交提交表单。
服务器处理提交的表单并重命名上传的文件。
问题来了,服务器是IIS,然后是映射实现的虚拟目录。
在这种情况下,$ _ server ['document _ root']不在PHP站点的根目录中
虽然上传功能已经完成,但该文件无法下载。考虑到服务器的安全性,我还是打算把文件放在PHP站点。
然后我陷入了思维局限。
再仔细想想:
为什么我不以实现PHP上传机制的方式重复一遍?
PHP不是先把文件放在临时目录吗?那为什么我假设JS上传后的目录也是临时目录呢?
然后在再次提交表单时复制文件。转到指定的目录,从而完成所需的功能。
PHP有一个文件Copy函数Copy();然后配合rename()函数。这样,文件上传后可以第二次移动和重命名。
注意:如果在窗口平台下复制零字节的文件,copy()将返回FALSE,但文件将被正确复制。
然后PHP在文件处理中主动引用了Liunx的文件处理机制。PHP中文件操作的效率与I/O对写入和操作系统有关。
总结:其实解决问题的方法有很多,不要画一个圈来限制自己的思维。
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php文件操作总结》、《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》。
希望本文对PHP编程有所帮助。