PHP文件上传

发布时间:2008年09月08日      浏览次数:807 次
PHP文件上传
与文件系统和服务器的交互
文件上传`使用目录函数 `与文件系统的交互`使用程序执行函数`与环境变量交互
文件上传
在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录
PHP中文件上传的基础知识
表单提交`对文件的操作
何为文件上传?
为了满足传递文件信息的需要:HTTP协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器上指定目录存放。
HTML规范规定上传文件时表单头必须使用
<html>
<head><title>文件上传</title></head>
<body>
<form action="todo.php" method="post" enctype="multipart/form-data"> //返回值 post 方式上传 表示要上传一个文件
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
上传文件:<input type="file" name="userfile">
提交:<input type="submit" value="提交查询">
</form>
</body>
</html>
注意几个特征属性:
POST方法:
表单最常用的功能,向目标页面传递变量,我们在上传文件的时候,会在表单中设置相应的属性,来完成文件的传递.
enctype="multipart/form-data"
这样服务器就会知道,我们要传递一个文件,这样服务器可以知道上载的文件带有常规的表单信息。
MAX_FILE_SIZE
此字段必须在文件输入字段之前,控制最大的传递文件的大小(字节) ——真的可以控制吗?
<input type="file" name="userfile">
设置浏览器文件输入浏览按钮
我们在服务器端的php.ini中设置对表单传递的数据进一步判断
file_uploads = On /Off 是否允许文件上传
upload_max_filesize = 2M 上传的文件的最大大小
post_max_size = 8M POST数据所允许的最大大小
表单传递的数据,文件只是其中的一部分,所以设置时,upload_max_filesize应该小于post_max_size
超级全局数组$_FILES
PHP程序中,需要处理的上传数据保存在全局数组中$_FILES(超级全局数组)
保存$_FILES数组中的元素,将HTML表单的type="file"标记的名称name="userfile" 存放在数组中。
存储在$_FILES['userfile']['name']中的值是:客户端文件系统的文件的名称
存储在$_FILES['userfile']['type']中的值是:客户端传递的文件的类型
存储在$_FILES['userfile']['size']中的值是:文件的字节的大小
存储在$_FILES['userfile']['tmp_name']中的值:文件被上传后在服务器存储的临时全路径
```````````````````````````````````````````
存储在$_FILES['userfile']['error']中的值是:文件上传的错误代码-php 4.2以后增加的功能
存储在$_FILES['userfile']['error']中的值
值为0:表示没有发生任何错误。
值为1:表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize。
值为2:表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。
值为3:表示文件只被部分上传。
值为4:表示没有上传任何文件。
````````````````````````````````````
is_uploaded_file( )检测是否是上传文件
move_uploaded_file(临时路径/临时文件名,目的路径/目的文件名 ) 函数将存放在临时目录下的上传文件拷贝出来,存放到指定目录的指定文件名,如果目标存在将会被覆盖。
范例:print_r($_FILES["upfile"]);//将表单提交的系统存放在这
echo "文件名字".$_FILES["upfile"]["name"];//文件名字
if($_FILES["upfile"]["error"]<=1){//错误代码小于1 大于1表示有错误
echo "请选择文件";
}
if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){//检测这个文件是否是上传文件 文件的临时路径
echo '是上传文件';
move_uploaded_file($_FILES["upfile"]["tmp_name"],"./upload/".$_FILES["upfile"]["name"]);
//将临时文件转移到upload目录 文件名 为原名
}else{
echo '不是上传文件';
}
文件上传后的临时存放目录
上传的文件被放置到服务器端临时目录:/tmp目录里面 命名为一个唯一的,随机生成的临时文件名。 注:该文件在程序执行完后将自动被删除掉。在删除前可以像本地文件一样操作。
/tmp目录是默认的上传临时文件存放地点, 如果需要更改这个目录: 可以编辑/etc/php.ini 文件File Uploads 段的upload_tmp_dir 属性值。
当配置文件php.ini的register_globals属性被设置成on的情况
<input type=file name=myfilename>
将生成全局变量:$myfilename等
```````````````````````````````````````````````
当需要上传多个文件的情况,有两种实现的解决方法:
使用不同的表单元素
<input type=file name=file_a>
<input type=file name=file_b>
使用数组格式的表单元素
<input type=file name=file[1]>
<input type=file name=file[2]>
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!