198211401182 发表于 2015-11-17 11:42:10

php编程之文件上传与下载

  1、文件上传

*

* 1. 单个文件上传

*

* 2. 多个文件上传

*

* 一、PHP配置文件中和上传文件有关的选项

*

*   file_uploads = on

*

*   upload_max_filesize= 200M最大不要超过服务器的内存

*

*   upload_tmp_dir = c:/uploads/

*

*      post_max_size = 250M此项应大于upload_max_filesize

*

*   二、上传表单需要的注意事项

*

*    1. 如果有文件上传操作表单的提交方法必须 HTTP post

*    2. 表单上传需要使用type为file的表

*    3. enctype="multipart/form-data" 只有文件上传时才使用这个值 ,用来指定表单编码的数据方式, 让服务器知道,我们要传递一个文件并带有常规的*      表单信息。

*

* 4. 建议添加一个 MAX_FILE_SIZE 隐藏表单, 值的单位也是字节

*

*

*    三、PHP处理上传的数据

*

*   

*      $_POST 接收非上传的数据

*

*

*    如果是文件上传的数据则使用 $_FILES处理上传的文件

*

=> Array

      (

             => hee.jpg

             => image/pjpeg

             => C:\WINDOWS\Temp\php68.tmp

             => 0

             => 24485

    )





Array

(

    => Array

      (

             => Array

                (

                   => icon_pdf.gif

                   => icon_ppt.gif

                   => icon_pptx.gif

                   => icon_doc.gif

                )





             => Array

                (

                   => image/gif

                   => image/gif

                   => image/gif

                   => image/gif

                )





             => Array

                (

                   => C:\WINDOWS\Temp\php69.tmp

                   => C:\WINDOWS\Temp\php6A.tmp

                   => C:\WINDOWS\Temp\php6B.tmp

                   => C:\WINDOWS\Temp\php6C.tmp

                )





             => Array

                (

                   => 0

                   => 0

                   => 0

                   => 0

                )





             => Array

                (

                   => 251

                   => 205

                   => 608

                   => 281

                )





      )





)


  2、<?php
//step 1 使用$_FILES['pic'][&quot;error&quot;] 检查错误
if($_FILES[&quot;pic&quot;][&quot;error&quot;] > 0){
switch($_FILES[&quot;pic&quot;][&quot;error&quot;]) {
case 1:
echo &quot;上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>&quot;;
break;
case 2:
echo &quot;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值&quot;;
break;
case 3:
echo &quot;文件只有部分被上传&quot;;
break;
case 4:
echo &quot;没有文件被上传&quot;;
break;
default:
echo &quot;末知错误&quot;;
}
exit;
}
$maxsize=5000000;//50k
//step 2 使用$_FILES[&quot;pic&quot;][&quot;size&quot;] 限制大小 单位字节 2M=2000000
if($_FILES[&quot;pic&quot;][&quot;size&quot;] > $maxsize ) {
echo &quot;上传的文件太大,不能超过{$maxsize}字节&quot;;
exit;
}

//step 3 使用$_FILES[&quot;pic&quot;][&quot;type&quot;]或是文件的扩展名 限制类型 MIMEimage/gifimage/png    gif png jpg
/*   list($dl, $xl) = explode(&quot;/&quot;, $_FILES[&quot;pic&quot;][&quot;type&quot;]);
if($dl!=&quot;image&quot;){
echo &quot;请上传一个图片,不充许其它类型文件&quot;;
exit;
}
*/
$allowtype=array(&quot;png&quot;, &quot;gif&quot;, &quot;jpg&quot;, &quot;jpeg&quot;);

$arr=explode(&quot;.&quot;, $_FILES[&quot;pic&quot;][&quot;name&quot;]);
$hz=$arr;
if(!in_array($hz, $allowtype)){
echo &quot;这是不充许的类型&quot;;
exit;
}

//step 4 将让传后的文件名改名
$filepath=&quot;./uploads/&quot;;
$randname=date(&quot;Y&quot;).date(&quot;m&quot;).date(&quot;d&quot;).date(&quot;H&quot;).date(&quot;i&quot;).date(&quot;s&quot;).rand(100, 999).&quot;.&quot;.$hz;
//将临时位置的文件移动到指定的目录上即可
if(is_uploaded_file($_FILES[&quot;pic&quot;][&quot;tmp_name&quot;])){
if(move_uploaded_file($_FILES[&quot;pic&quot;][&quot;tmp_name&quot;], $filepath.$randname)){
echo &quot;上传成功&quot;;
}else{
echo &quot;上传失败&quot;;
}
}else{
echo &quot;不是一个上传文件&quot;;
}
  3、<?php
/*   请求
*   1. HTTP 1.1协议 版本
*   2. 头信息,
*   3. 你请求的表单信息, 你提交给服务器的信息
*
*   http://localhost/one.php?aa=bbb&ccc=ddd
*
*   响应
*   1. 状态 200 ok   404 页面没找到
*   2. 响应头信息,
*   3. 数据发送给
*
*/
?>
  4、<?php
header(&quot;Content-Type:image/gif&quot;);
header('Content-Disposition: attachment; filename=&quot;logo3333.gif&quot;');
header('Content-Length:'.filesize(&quot;logo.gif&quot;));
readfile(&quot;logo.gif&quot;);



  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: php编程之文件上传与下载