文件上传用到的函数 20150205

header('content-type:text/html;charset=utf-8');

move_uploaded_file(file,newloc)  :若成功则返回true  否则false。

copy(file,newloc)  : 若成功则返回true ,否则false。

strtolower(string)  :把字符串转换为小写。

end(array)  : 返回数组最后一个元素。 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)。

explode("分隔符","字符串")  把字符串分隔为数组。

pathinfo(path,options) :以数组的形式返回路径信息。options可能的值:

可能的值:

  • PATHINFO_DIRNAME - 只返回 dirname
  • PATHINFO_BASENAME - 只返回 basename
  • PATHINFO_EXTENSION - 只返回 extension

in_array(value,array)  :在数组中搜索给定的值。

is_uploaded_file(file) 函数判断指定的文件是否是通过 HTTP POST 上传的。 如果是则返回true.

microtime() 函数返回当前 Unix 时间戳和微秒数。

uniqid(prefix,more_entropy) 函数基于以微秒计的当前时间,生成一个唯一的 ID。

如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。

如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。

md5(string,raw) 计算字符串的 MD5 散列。

raw可选。规定十六进制或二进制输出格式:

  • TRUE - 原始 16 字符二进制格式
  • FALSE - 默认。32 字符十六进制数

确保文件名唯一,防止同名文件覆盖:$name=md5(uniqid(microtime(true),true));

file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。

+++++++拓展开始+++++++++

PHP的 file_exists = is_dir + is_file 它既可以判断文件是否存在,又可以判断目录是否存在。

is_file 只判断文件是否存在;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;

查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。

 +++++++++拓展结束++++++++++++

 mkdir(path,mode,recursive,context) 函数创建目录。若成功,则返回 true,否则返回 false。

参数描述
path 必需。规定要创建的目录的名称。
mode 必需。规定权限。默认是 0777。
recursive 必需。规定是否设置递归模式。
context 必需。规定文件句柄的环境。Context 是可修改流的行为的一套选项。

chmod() 函数改变文件模式。如果成功则返回 TRUE,否则返回 FALSE。chmod(file,mode)

参数描述
file 必需。规定要检查的文件。
mode

可选。规定新的权限。

mode 参数由 4 个数字组成:

  • 第一个数字永远是 0
  • 第二个数字规定所有者的权限
  • 第二个数字规定所有者所属的用户组的权限
  • 第四个数字规定其他所有人的权限

可能的值(如需设置多个权限,请对下面的数字进行总计):

  • 1 - 执行权限
  • 2 - 写权限
  • 4 - 读权限

文件上传:

tmp是临时文件

临时文件一般是以隐藏的形式出现,当文件完成时,自动消失。

服务器端配置:

File_uploads=On   支持HTTP上传。

Upload_tmp_dir  临时文件保存目录。

upload_max_filesize=2M 允许上传文件的最大值

max_file_uploads=20  允许一次上传文件的最大数。

Post_max_size=8M   post方式发送数据的最大值。

 

 

Max_execution_time=-1 设置了脚本被解析器终止之前允许的最大执行时间

单位为妙,防止程序员写的不好而占尽服务器资源。

Max_input_time=60  脚本解析输入数据允许的最大时间,单位秒。

Max_input_nesting_level=64 设置输入变量的嵌套深度。

Memory_limit=128M  最大单线程的独立内存使用量。也就是一个Web请求,给予线程最大的内存使用量的定义。

 

错误信息说明:

 

UPLOAD_ERR_OK:值为0,表示没有错误发生,文件长传成功

 

UPLOAD_ERR_INI_SIZE:值为1,表示上传文件超过了php.iniupload_max_filesize选项限制的值。

 

UPLOAD_ERR_FORM_SIZE:值为2,表示上传文件的大小超过了HTML表单中max_file_size选项指定的值。

 

UPLOAD_ERR_PARTIAL:值为3,表示文件只有部分被上传。

 

UPLOAD_ERR_NO_FILE:值为4,没有文件被上传

 

UPLOAD_ERR_NO_TMP_DIR:值为6,找不到临时文件夹。

 

UPLOAD_ERR_CANT_WRITE:值位7,文件写入失败。

 

UPLOAD_ERR_EXTENSION:值为8,上传的文件被PHP扩展程序中断。

 

PHP 编码设置:

header("Content-type: text/html; charset=utf-8");

Html编码设置:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

 

 

解决中文名字上传后乱码问题:

$name = iconv('utf-8','gb2312',$file['name']); //利用Iconv函数对文件名进行重新编码

该函数将$file[‘name’]字符串串由gb2312转换成utf-8的编码。

未完 待续…………

原文地址:https://www.cnblogs.com/perseverancevictory/p/4275174.html