php文件上传详解
2017-09-06 14:42
169 查看
1.PHP配置文件
首先,我们文件上传需要设定一下 php.ini 的配置文件。这是最基本的设置,如果这里设置不成功,那么代码写得再正确也没有用。基本的配置项目如下file_uploads = on #文件上传开启 upload_max_filesize= 200M #文件上传的最大尺寸 upload_tmp_dir = c:/uploads/ #临时文件目录 post_max_size = 250M #POST时最大尺寸,必须要大于 upload_max_filesize
2.上传时注意事项
1) 文件上传操作表单提交方法必须为 post2)文件上传时,input type 必须为 file 类型
3)文件上传的表单中,需要增加一个隐含内容,代码如下,value 的单位是 B(字节)
<input type="hidden" name="MAX_FILE_SIZE" value="100000000">PS : MAX_FILE_SIZE限制文件上传大小总是被人忽略,我们在使用文件上传的时候总是会限制文件大小,然而我们通常通过$_FILES['thisfile']['error']判断文件是否上传成功是文件已经被发送到服务器端的临时文件夹里面,而我们想要看到的情况是在POST过程之前判断文件大小是否符合我们设置的范围,也就是不向服务器发送文件内容,而是直接在客户端提醒文件大小不符。这是一个非常棒的想法,不过MAX_FILE_SIZE仅仅是PHP对浏览器的一个建议,事实上目前主流的浏览器都没有采纳这个建议,所以使用MAX_FILE_SIZE来约束上传文件的大小形同虚设,可有可无。
MAX_FILE_SIZE还有一个用场:后台PHP会判断接收到的文件大小是否大于这个值,如果大于,$_FILES['thisfile']['error']值为2,同时放弃保存临时文件,将$_FILES['thisfile']['size']置0。
4)enctype=”multipart/form-data ” 只有文件上传时才使用这个值,用来设置表单的MIME编码,默认情况这个编码格式是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据,让服务器知道我们要传递一个文件并带有一些常规的表单信息。如下:
<form action="upload.php" method="post" enctype="multipart/form-data"> </form>
如果不加 enctype=”multipart/form-data”,文件上传是不会成功的。
3.文件上传(简单示例)
HTML:<form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="300000"> <input type="file" name="file"> <input type="submit" name="submit" value="提交"> </form>PHP:
<?php if (!empty($_FILES['file'])) {//判断上传内容是否为空 if ($_FILES['file']['error'] > 0) {//判断上传错误信息 echo "上传错误:"; switch ($_FILES['file']['error']) { case 1: echo "上传文件大小超出配置文件规定值"; break; case 2: echo "上传文件大小超出表单中的约定值"; break; case 3: echo "上传文件不全"; break; case 4: echo "没有上传文件"; break; } } else { list($maintype, $subtype) = explode("/", $_FILES['file']['type']); if ($maintype != "image" || $subtype != "jpeg") { echo "上传文件格式不正确"; } else { if (!is_dir("./upfile")) {//判断指定目录是否存在 mkdir("./upfile");//创建目录 } $path = './upfile/' . time() . strtolower(strstr($_FILES['file']['name'], "."));//定义上传文件名和存储位置 if (is_uploaded_file($_FILES['file']['tmp_name'])) {//判断文件上传是否为HTTP POST上传 if (!move_uploaded_file($_FILES['file']['tmp_name'],$path)) {//执行上传操作 echo "上传失败"; } else { echo "文件:" . time() . strtolower(strstr($_FILES['file']['name'], ".")) . "上传成功,大小为:" . $_FILES['file']['size'] . "字节"; } } else { echo "上传文件:".$_FILES['file']['name']."不合法"; } } } }
相关文章推荐
- PHP文件上传操作实例详解(包含上传文件类型MIME验证)
- php文件上传的例子及参数详解
- php文件上传详解
- jQuery+php实现ajax文件即时上传的详解
- PHP文件上传实例详解!!!
- php 修改上传文件大小限制实例详解
- PHP入门教程之上传文件实例详解
- PHP文件上传代码和逻辑详解
- 详解python上传文件和字符到PHP服务器
- PHP文件上传实例详解
- PHP文件上传详解
- PHP文件上传操作实例详解
- PHP文件上传详解
- PHP文件上传详解
- PHP通过FTP上传文件详解介绍
- PHP文件上传详解
- php.ini修改php上传文件大小限制的方法详解
- php.ini修改php上传文件大小限制的方法详解
- php 修改上传文件大小限制实例详解
- php.ini修改php上传文件大小限制的方法详解