上传文件的相关信息(名字,大小,尺寸,上传后的临时存储路径及文件名,错误代码等)可以用系统变量 $_FILES 来获取。
在上传提交后,我们可以接着用 move_upload_file() 将临时文件移到特定的目录下,否则临时文件不会被保存,move_upload_file() 语法如下:
[Plain Text] 纯文本查看 复制代码 bool move_uploaded_file ( string $filename , string $destination )
第 1 个参数 $filename 是临时文件的路径和文件名,这个参数可以通过 $_FILES["字段名"]["tmp_name"] 来获取。
第 2 个参数 $destination 是目的文件的路径及文件名。
move_uploaded_file() 函数会首先检查参数 filename 指定的临时保存是否为 HTTP 通讯协议上传的文件,如果不是,那么直接返回 FALSE,表示文件移动失败,否则将文件移动到参数 destination 所指定的位置,并根据参数 destination 来修改文件名。
不过,如果因为其他因素造成 move_uploaded_file() 函数无法顺利移动临时文件,比如文件不存在或者权限问题,那么不论有没有移动临时保存,临时保存都会被自动删除。
使用该函数需要注意的是,它不支持 UTF-8 编码,所以上传文件时,文件名不能出现非 ASCII 字符,例如中文,只要文件名包含中文,则上传一定失败。如果上传的文件包含中文名,那么先使用 iconv() 函数进行相应名字的转换即可,但此时注意系统的不同而有所区别,如中文 Windows 使用的是 GB2312 编码,而 Linux 上使用的是 UTF-8 编码。
测试代码可参考:《使用 CURL 命令进行简单文件上传》 |