文件上传:

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. 虚拟机:Python虚拟机的基本了解

    探索某个东西,我们需要知道这个东西是用来干什么的,能给我们带来什么,解决了什么样的问题,有什么优缺点等等:简要了解了一下Python虚拟机的特征: 目前有几个疑问: 1.对象 · Python通过对象 ...

  2. Node 一个简单的HttpServer+Mysql的后台

    接收来自客户端的Post参数,通过Mysql查询,并以Json返回需要的信息,直接代码 createServer(); function createServer(){ //使用express创建HT ...

  3. 谈谈favicon和他带来的问题

    favicon.ico介绍 favicon.ico是个什么东西呢,也许见得太多都习以为常了(我就是这样,直到写这篇文章之前才知道),看看维基百科的解释: Favicon是favorites icon的 ...

  4. MYSQLDUMP参数详解

    mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器).转储包含创建表和/或装载表的SQL语句. 如果你在服务器上进行备份,并且表 ...

  5. MFC 文件对话框

    文件对话框的分类 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如,很多编辑软件像记事本等都有"打开"选项,选择" ...

  6. python不同模式打开文件的完全列表

    模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这是默认模式. r+ 打开一个文件用于读写.文件指 ...

  7. nginx的在linux系统中的安装

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. n  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果 ...

  8. Navicat 的使用(二)

    一,navicat如何写sql语句查询? 方法1:ctrl+q就会弹出一个sql输入窗口,就可以在里面写sql了.写完sql后,直接ctrl+r就执行sql了. 还有一点,写sql语句时,navica ...

  9. Cross-Site Scripting(XSS)简介

    最近才开始研究HTML以及安全问题.如果有什么说得不对的地方,望请指出. 在网络应用安全中,XSS可能是最常见,范围最大,所包含攻击方法最多,同时也是最难以理解的一种攻击.在OWASP所列出的十大网络 ...

  10. Lambda表达式 和 Expression<T>

    经常用的Lambda表达式 返回的是  Expression<T> 格式 public class ActivityService { private readonly List<A ...