一、
客户端配置:
表单页面
表单的发送方式是post
添加enctype = “multipart/form-data”
 
<form action="doaction.php" method="post" enctype="multipart/from-data">
     <input type="file" name="myfile"/><br/>
     <input type="submit" value="上传文件"/>
</from>
二、—FILES
 
二维数组
第一维是input 的name
第二维 如下
name => nv.jpg  文件名
type   => image/jepg  文件类型MIME
tmp_name =>临时地址
error => 0   错误号
size  =>176943   文件的大小
 
三、移动文件
move_uploaded_file($tem_name,$destination):将服务器上的临时文件移动到指定目录下,移动成功返回true ,失败返回false
copy($src,$dst)
 
 
四、服务器端的配置
 
file_uploads = on ,支持HTTP上传
upload_tem_dir = ,临时文件保存的目录
upload_max_filesize = 2m.允许上传文件的最大值
max_file_uploads = 20,允许一次上传的最大文件数
post_max_size = 8M ,POST方式发送数据的最大值
max_execution_time = -1设置了脚本被解析器终止之前的最大执行时间,单位是秒,防止程序写的不好而占据服务器的资源。
max_input_time = 60,脚本解析输入的数据允许的最大时间,单位是秒
max_input_nesting_level = 64,设置输入的变量的嵌套深度。
max_input_vars = 1000,接受多少输入的变量(限制分别应用与$_GET / $_POST)和$_cookie超全局变量,指令的使用减轻了以哈希碰撞来进行拒绝服务器攻击的可能性,如有超过指令数量的变量,将会导致E_WARNING的产生,更多的输入变量将会从请求截断。
memory_limit =128M,最大单线程的独立内存使用量,也就是一个web请求,给予现成线程的最大内存使用量定义。
 
五、错误号
UPLOAD_ERR_OK  0 ,代表没有发生错误,文件上传成功
UPLAOD_ERR_INI_SIZE  1  ,上传的文件超过了php.ini中upload_max_filesize选项限制的值
UPLOAD_ERR_FROM_SIZE 2 ,上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。
UPLOAD_ERR_PARTIAL  3 ,文件只有部门上传
UPLOAD_ERR_NO_FILE  4  ,没有文件被上传
UPLOAD_ERR_NO_TMP_DIR  6 ,找不到临时文件夹
UPLOAD_ERR_CANT_WRITE   7 ,文件写入失败
UPLOAD_ERR_EXTENSION   8 , 上传的文件被PHP拓展程序中断
 
六、服务器端限制
限制上传文件的大小
if($fileinfo['size']>$maxsize)
限制上传文件的类型
$allowext = array('jpeg','jpg','png','gif','wbmp'); 
$ext = strtolower(end(explode('.',$fileinfo['name'])));
$ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION)
if(!in_array($ext,$allowext))
{
     
}
检查是否是真实的图片类型
getimagesize($filename) : 得到指定图片的信息,如果是图片返回数组,如果不是返回false
检查是否是HTTP POST 方式上传
if(!is_uploaded_file($fileinfo['tmp_name'])){}
 
七、文件名不重名
$uniName=md5(uniqid(microtime(true),true)).'.'.$ext;
 
八。路径的判断
if(! file_exists($path))
{
     mkdir($path,0777,true);
     chmod($path,0777);
}
 
九。多文件上传
 
function getFiles()
{
    foreach ($_FILES as $file) {
        if (is_string($file['name'])) {
            $files[$i] = $file;
            $i++;
        }elseif (is_array($file['name'])) {
            foreach ($file['name'] as $key => $val) {
                $files[$i]['name'] = $file['name'][$key];
                $files[$i]['type'] = $file['type'][$key];
                $files[$i]['error'] = $file['error'][$key];
                $files[$i]['size'] = $file['size'][$key];
            }
        }
    }
    return $files;
}
十:下载
$filename=$_GET['filename];
header('content-disposition:attachment;filename='.basename($filename));
header('content-length:'.filesize($filename));
readfile($filename);

php基础复习(3)文件上传于下载的更多相关文章

  1. 文件上传和下载(可批量上传)——Spring(三)

    在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...

  2. 文件上传和下载(可批量上传)——Spring(二)

    针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...

  3. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...

  4. MVC文件上传与下载

    MVC文件上传与下载 MVC文件上传与下载 想想自己从毕业到工作也有一年多,以前公司的任务的比较重,项目中有的时候需要用到什么东西都去搜索一下,基础知识感觉还没有以前在学校中的好.最近开始写博客,真的 ...

  5. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  6. Http服务器实现文件上传与下载(五)

    一.引言 欢迎大家和我一起编写Http服务器实现文件的上传和下载,现在我回顾一下在上一章节中提到的一些内容,之前我已经提到过文件的下载,在文件的下载中也提到了文件的续下载只需要在响应头中填写Conte ...

  7. Http服务器实现文件上传与下载(一)

    一.引言 大家都知道web编程的协议就是http协议,称为超文本传输协议.在J2EE中我们可以很快的实现一个Web工程,但在C++中就不是非常的迅速,原因无非就是底层的socket网络编写需要自己完成 ...

  8. 基于hap的文件上传和下载

    序言 现在,绝大部分的应用程序在很多的情况下都需要使用到文件上传与下载的功能,在本文中结合hap利用spirng mvc实现文件的上传和下载,包括上传下载图片.上传下载文档.前端所使用的技术不限,本文 ...

  9. 精讲响应式WebClient第4篇-文件上传与下载

    本文是精讲响应式WebClient第4篇,前篇的blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方 ...

  10. 使用Spring MVC实现文件上传与下载

    前段时间做毕业设计的时候,想要完成一个上传文件的功能,后来,虽然在自己本地搭建了一个ftp服务器,然后使用公司的工具完成了一个文档管理系统:但是还是没有找到自己想要的文件上传与下载的方式. 今天看到一 ...

随机推荐

  1. Codeforce Round #216 Div2

    e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...

  2. UVa10023手动开大数平方算法

    题目链接:UVa 10023 import java.math.BigInteger; import java.util.Scanner; public class Main { public sta ...

  3. nyist 599 奋斗的小蜗牛

    http://acm.nyist.net/JudgeOnline/problem.php?pid=599 奋斗的小蜗牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 ...

  4. 压缩 & 解压缩 命令汇总:tar、zip & unzip、

    1. tar命令详解     格式:tar [-cxtzjvfpPN] 文件与目录 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五 ...

  5. ubuntu安装jdk遇到的问题:cannot execute binary file

    安装完jdk,配置好环境变量出现如下状况: cannot execute binary file 问题原因: jdk的位数与ubuntu的系统位数不一致 jdk 64位 ubuntu 32位 然后通过 ...

  6. ansible自动化运维工具的安装与使用

    运行环境 centOS6.6 ansible ansible的功能还是比较多的,博主只用它在集群上进行批量部署软件和维护的功能,其他不多做研究,有需要的话这篇文章会慢慢补充. ansible特点 轻量 ...

  7. java装饰者模式理解

    java 装饰者模式其实就是扩展子类的功能,和继承是一个性质. 但继承是在编译时就固定扩展了父类的一些功能,而装饰者模式是在运行过程中动态绑定对象,实现一个子类可以随时扩展功能. 将方法排列组合,也可 ...

  8. paper 53 :深度学习(转载)

    转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...

  9. WM_SETFOCUS和WM_KILLFOCUS、WM_GETDLGCODE、CM_ENTER...

    procedure WMSetFocus (var Message: TWMSetFocus); message WM_SETFOCUS; //获得焦点 procedure WMKillFocus ( ...

  10. webssh software

    shellinabox是由Markus Gutschke开发的一款自由开源的基于Web的Ajax的终端模拟器.它使用AJAX技术,通过Web浏览器提供了类似原生的 Shell 的外观和感受. yum ...