咨询电话:
15628812133
30
2018/06

PHP如何上传文件到指定目录

发布时间:2018-06-30 11:32:57
发布者:pengyifeng
浏览量:
0

PHP实现上传文件的方法

1.表单上传文件,用file字段 
允许用户上传文件,在HTML表单的声明中要加上一个上传的属性: 
enctype = 'multipart/form-data' 
表单的method必须是POST 
表单选项MAX_FILE_SIZE隐藏域用于限制上传文件大小,它必须放在文件表单元素前面,单位为字节。 

image.png

上传时,PHP收到关于该文件的信息数组,这些信息可以在$_FILES这个超级全局数组中找到。 
如:上传了一个“wenhui.jpg”的图片数组值如下: 
name "wenhui.jpg" 上传时文件的名字 
type “image/jpeg" 文件类型 
tmp_name "/tmp/wenhui" 服务器端的临时文件名 
error 上传错误的返回值 
size 2045 文件实际大小 

3.把临时文件存储到指定路径,上传文件就成功了,现在解决的就是如果存到指定路径,如果路径中文件夹不存在如何创建的方法;

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

尝试新建一个由 pathname 指定的目录。

注意也许想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。

注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。

默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。 

1.首先 简单说一下mkdir()与mkdirs()的区别,以及,is_dir和dirname():

mkdir()  只能在已经存在的目录中创建创建文件夹(即父级必须有才行)。

mkdirs()  可以在不存在的目录中创建文件夹。诸如:a\b,既可以创建多级目录。

dirname()  是返回路径中的目录部分。

is_dir()  用于判断给出的文件名是否是一个有效的目录

2.大致流程为:

(1) 先用is_dir判断是否已是一个文件夹,如果是则返回TRUE。如没有(或者不是文件夹),则试着创建它,当然有可以父级不存在,那mkdir直接就创不成功,但也为不报错,所以就用@来抑止报非致命错误。

(2)如果传参数都不满足条件,那么就进入第二个if语句,先是取得路径中的目录部分,当然有可能是不存在的多级父级,所以用了mkdirs()来先创建父级,如果成功(不成功返回FALSE),那么再用mkdir来创建最终的目录了。

好了,以上就是第一种方案。

第二种

(说明:此方案代码精简,推荐使用)

function create_folders($dir) {
    return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
}


关键词:
返回列表