设为首页 收藏本站
查看: 910|回复: 0

[经验分享] php编程之文件上传与下载

[复制链接]

尚未签到

发表于 2015-11-17 11:42:10 | 显示全部楼层 |阅读模式
  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处理上传的文件

*

  [pic] => Array

        (

            [name] => hee.jpg

            [type] => image/pjpeg

            [tmp_name] => C:\WINDOWS\Temp\php68.tmp

            [error] => 0

            [size] => 24485

    )





Array

(

    [pic] => Array

        (

            [name] => Array

                (

                    [0] => icon_pdf.gif

                    [1] => icon_ppt.gif

                    [2] => icon_pptx.gif

                    [3] => icon_doc.gif

                )





            [type] => Array

                (

                    [0] => image/gif

                    [1] => image/gif

                    [2] => image/gif

                    [3] => image/gif

                )





            [tmp_name] => Array

                (

                    [0] => C:\WINDOWS\Temp\php69.tmp

                    [1] => C:\WINDOWS\Temp\php6A.tmp

                    [2] => C:\WINDOWS\Temp\php6B.tmp

                    [3] => C:\WINDOWS\Temp\php6C.tmp

                )





            [error] => Array

                (

                    [0] => 0

                    [1] => 0

                    [2] => 0

                    [3] => 0

                )





            [size] => Array

                (

                    [0] => 251

                    [1] => 205

                    [2] => 608

                    [3] => 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;]或是文件的扩展名 限制类型 MIME  image/gif  image/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[count($arr)-1];
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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140278-1-1.html 上篇帖子: win7 php开发环境搭建 下篇帖子: ubuntu+apache2+php5+mysql5.0的安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表