文件上传:

1.单个与多个文件上传
2.上传表单的属性设置
3.PHP配置文件中相关文件上传的设置
4.PHP处理上传的文件数据

php.ini配置:
file_uploads = on; 默认on
upload_max_filesize = 2M; 默认2M  最大不能超过服务器内存
upload_tmp_dir = c:/uploads/    默认为系统临时目录c:/windows/temp/  上传文件的临时路径
post_max_size=250M;默认为8M

form表单设置:
1.文件上传控件必须放在Form表单中,必须有name属性
2.提交方式必须为POST,必须指定enctype="multipart/form-data" 用来指定表单传输数据的编码方式
<form action="php_fileupsave.php" method="post" enctype="multipart/form-data">
    <input type="file" name='pic'/>
    <input type="submit" value="上传"/>
    <inpu type='hidden' name='MAX_FILE_SIZE' value='1000000'/>
</form>
3.建议添加标签:<inpu type='hidden' name='MAX_FILE_SIZE' value='1000'/>用于快速提示最大上传文件大小

服务器通过$_FILES接收上传文件:
$_FILES["pic"]
Array
(
    [pic] => Array
        (
            [name] => gone.jpg     文件名
            [type] => image/jpeg   文件类型
            [tmp_name] => C:\Windows\temp\phpFD5.tmp  临时保存路径
            [error] => 0          //错误号
            [size] => 62481        //文件大小
        )
)

[将临时位置的文件移动到指定的目录]
copy($_FILES['pic']['tmp_name'],'/upload/files/a.jpg')

处理上传的文件:
1.检查错误:$_FILES['pic']['error']==0
2.限制上传大小:$_FILES['pic']['size']/1024   小于5M
3.限制文件扩展名:$_FILES['pic']['type']  只能是图片
4.重命名文件(文本文件处理文件内容)

文件下载:

1.部分文件如.rar/doc/pdf可以使用a标签加连接地址以附件形式下载
2.但是如果是txt/html/jpg/gif等网页文件和脚本文件会在浏览器直接打开

请求:
1.HTTP 1.1 协议版本
2.头信息
3.表表单信息

响应
1.状态码 200 ok
2.头信息
3.响应内容

头信息在服务器端必须在最开始添加
header("Content-Type:text/html; charset=utf8");
header("location:demo.php"); 页面重定向
<script>window.location='demo.php'</script>

告诉浏览器,将文件以附件的形式处理
header('Content-Type:image/gif'); 类型,客户端会自动检测
header(Content-Length:20000); 大小,客户端会自动检测
header('Content-Diposition: attachment; filename='a.gif');
readfile('a.gif');

服务器端:

使用$_FILES来接收文件数

HTML代码示例:

   1: <?php

   2: header("Content-Type:text/html; charset=utf8");

   3: ?>

   4: <html>

   5: <head>

   6:     <title></title>

   7: </head>    

   8: <body>

   9:         <form action="fileUpProcess.php" method="post" enctype="multipart/form-data">

  10:             <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />

  11:             <input type="file" name='pic[]'/><br/>

  12:             <input type="file" name='pic[]'/><br/>

  13:             <input type="file" name='pic[]'/><br/>

  14:             <input type="submit" value="上传"/>

  15:         </form>

  16:     </body>

  17: </html>

PHP接收处理文件代码:

   1: <?php

   2: header("Content-Type:text/html; charset=utf8");

   3: // echo "<pre>";

   4: // print_r($_FILES);

   5: // echo "</pre>";

   6:  

   7: // 1.检查错误:$_FILES['pic']['error']==0 

   8: if($_FILES['pic']['error']>0)

   9: {

  10:     switch ($_FILES['pic']['error']) {

  11:         case 1:

  12:             die("文件超过了 php.ini 中 upload_max_filesize 选项限制的值");

  13:         case 2:

  14:             die("文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");

  15:         case 3:

  16:             die("文件只有部分被上传");

  17:         case 4:

  18:             die("没有文件被上传");

  19:         default:

  20:             die("网络异常");

  21:     }

  22: }

  23: // 2.限制上传大小:$_FILES['pic']['size']/1024   小于5M

  24: $maxSize = 1024*1024;

  25: if($_FILES['pic']['size']>$maxSize)

  26: {

  27:     die("上传失败,上传文件不能超过".($maxSize/1024)."M");

  28: }

  29:  

  30: // 3.限制文件扩展名:$_FILES['pic']['type']  只能是图片

  31: // image/gif

  32: // image/jpeg

  33: // image/png

  34: /*不能精确匹配文件类型

  35:  list($type,$ext) = explode('/', $_FILES['pic']['type']);

  36:  if($type!='image'){

  37:      die("上传失败,只能上传图片文件");

  38:  }

  39:  */

  40:  

  41: // 通过文件扩展名来限制:

  42: //取得文件扩展名

  43: $arr = explode('.', $_FILES['pic']['name']);

  44: $ext = strtolower($arr[count($arr)-1]);

  45:  

  46: $allowExt=array("png","gif","jpg","jpeg");

  47: if(!in_array($ext, $allowExt))

  48: {

  49:     die("上传失败,文件格式不正确!");

  50: }

  51:  

  52: // 4.重命名文件(文本文件处理文件内容)

  53: $filePath = "";

  54: $newName = date('Y').date('m').date('d').date('H').date('i').date('s').rand(100,999).'.'.$ext;

  55:  

  56: // 5.将文件保存到指定目录

  57: //判断文件是否是通过HTTP POST上传的文件

  58: if(is_uploaded_file($_FILES['pic']['tmp_name'])){

  59:     if(move_uploaded_file($_FILES['pic']['tmp_name'], "./DownFiles/".$newName)){

  60:         echo "文件上传成功!";

  61:     }

  62: }

  63: else{

  64:     die("非上传文件");

  65: }

  66:  

  67: ?>

PHP文件的上传与下载的更多相关文章

  1. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  2. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

  3. SecureCRT使用sz和rz命令进行文件的上传和下载

    SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...

  4. 使用FTPClient进行文件服务器内文件的上传和下载

    我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...

  5. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...

  6. Apache FtpServer 实现文件的上传和下载

    1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...

  7. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  8. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  9. 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载

    黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...

  10. 步步为营-70-asp.net简单练习(文件的上传和下载)

    大文件的上传一般通过FTP协议,而一般小的文件可以通过http协议来完成 1 通过asp.net 完成图片的上传 1.1 创建html页面 注意:1 method="post" ; ...

随机推荐

  1. POJ 2457 Part Acquisition

    第一反应是BFS,比较直观,但是输出路径写的不是很熟练,此外,习惯不好,“==”写成了“=”,所以常量一定放前面! #include <cstdio> #include <queue ...

  2. Mysql: ERROR 1030 (HY000): Got error 28 from storage engine

    今天帮同事解决一个问题的时候,遇到了下面的异常: ERROR 1030 (HY000): Got error 28 from storage engine 我们的数据库是mysql,我们的sql语句是 ...

  3. Google Guava vs Apache Commons for Argument Validation

    It is an established good practice to validate method arguments at the beginning of the method body. ...

  4. ffmpeg]ffmpeg使用参数的中文说明

    基本选项: -formats 输出所有可用格式 -f fmt 指定格式(音频或视频格式) -i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头 -y 覆盖已有 ...

  5. 软件产品案例分析——K米

    第一部分 调研.评价 调研 测试机型:iPhone 6s K米版本:4.3.0 直观感受 界面干净,功能丰富,操作不复杂,易上手 错误类 无法分享KTV主页 步骤:进入KTV主页,点击右上角分享图标 ...

  6. Java Code Examples for javax.servlet.http.Part

    http://www.programcreek.com/java-api-examples/index.php?api=javax.servlet.http.Part The following ar ...

  7. BCE0019: '' is not a member of 'UnityEngine.Component'的问题

    看自学网上的Unity3D的视频,其中视频中的实力代码: n.rigidbody.AddForce(fwd * 28000); 这个代码运行会出现错误: BCE0144: 'UnityEngine.C ...

  8. js003-基本概念

    js003-基本概念 3.1 语法 3.1.1 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof. 3.1.2 标识符 所 ...

  9. PHP无限分类分类导航LINK的代码

    <?php function getCatePath($cid,&$result=array()){ include("conn.php"); $sql=" ...

  10. Laravel教程 七:表单验证 Validation

    Laravel教程 七:表单验证 Validation 此文章为原创文章,未经同意,禁止转载. Laravel Form 终于要更新这个Laravel系列教程的第七篇了,期间去写了一点其他的东西. 就 ...