曲径通幽论坛

标题: move_uploaded_file() -- 将上传文件移送到新位置 [打印本页]

作者: beyes    时间: 2012-6-13 19:26
标题: move_uploaded_file() -- 将上传文件移送到新位置
上传文件的相关信息(名字,大小,尺寸,上传后的临时存储路径及文件名,错误代码等)可以用系统变量 $_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 命令进行简单文件上传




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2