PHP实现文件上传和下载(单文件上传、多文件上传、多个单文件上传)(面向对象、面向过程)
今天我们来学习用PHP进行文件的上传和下载,并且用面向过程和面向对象的方式对文件上传进行一个限制
一、简单的上传测试
1、客户端:upload.php

2、后端:doAction.php

结果:

二、文件上传配置解析
1、服务器端配置(在php.ini中)
file_upload = On on表示打开支持HTTP上传,off表示关闭
upload_tmp_dir = 表示图片保存的位置
upload_max_filesize = 允许上传文件的最大值(默认2M)
max_file_upload = 允许一次上传的最大文件数(默认20)
post_max_size = POST方式发送数据的最大值(默认8M)
2、错误信息说明(error)无5号错误号
1、upload_err_OK = 0 表示文件上传成功
2、upload_err_ini_size = 1 表示上传文件超过了在PHP.INI中upload_max_file_size选项的限制值
3、upload_err_form_size = 2 表示上传文件超过了max_file_size选定值
4、upload_err_partial = 3 表示只有部分上传
5、upload_err_no_file = 4 表示没有文件被上传
6、upload_err_no_tmp_dir = 6 表示找不到临时文件夹
7、upload_err_cant_weitr = 7 表示文件写入失败
8、upload_err_extension = 8 表示上传的文件被PHP扩展程序中断
三、对上传文件进行一些限制
1、限制内容:
(1)限制上传文件的大小
(2)限制上传文件的类型
(3)检测是否为真实图片(即真实是txt文本文件,用户故意把后缀名改成图片文件)
(4)检测是否是HTTP POST方式上传的
2、客户端:upload1.php

3、服务器端:doAction1.php



相关函数解析:






4、测试结果
(1)上传一张图片



(2)上传一个文本文件


四、将上传功能封装成单文件的上传函数
1、前端:upload2.php

2、上传功能函数定义:upload.func.php



3、服务器端:doAction2.php 加测试结果

结果


结果



效果


五、多文件上传的封装函数(针对单文件、多个单文件、多文件上传)
首先,我们再进行上传多个文件的时候,那我们上传的结果会变得跟上面的不一样了,例如:

输出的结果为

那么我们可以看到,输出的结果是个三维数组,那么我们再进行对函数封装的时候呢,需要把三维数组转换为二维数组,这样的话,实用度会更强哦!
1、前端:upload3.php

2、上传文件的函数封装




3、服务器端:doAction3.php

4、测试:

结果


6、用面向对象来实现对单文件上传
1、前端:upload4.php

2、类文件:upload.class.php





3、服务器端:doAction4.php

5、测试
(1)


(2)


(3)


(4)



7、下载功能
准备工作:先创建一个文件夹,把客户端和服务器端,还有要下载的图片放进此文件夹中
1、前端:download.php

2、后端:doDownload.php

3、效果

小解释:

好了,这就是今天的全部内容啦,你学会了吗!!!!加油
END
PHP实现文件上传和下载(单文件上传、多文件上传、多个单文件上传)(面向对象、面向过程)的更多相关文章
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- MVC文件上传与下载
MVC文件上传与下载 MVC文件上传与下载 想想自己从毕业到工作也有一年多,以前公司的任务的比较重,项目中有的时候需要用到什么东西都去搜索一下,基础知识感觉还没有以前在学校中的好.最近开始写博客,真的 ...
- SpringMVC 实现文件上传与下载,并配置异常页面
目录 上传文件的表单要求 Spring MVC实现上传文件 需要导入的jar包 配置MultipartResolver解析器 编写接收上传文件的控制器 Spring MVC实现文件下载 下载文件时的h ...
- 文件的上传和下载--SpringMVC
文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- smartupload 上传与下载(转载)
前台: <form action="uploadimage.jsp" method="post" enctype="multipart/form ...
- 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)
目录 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) Http协议简述 HttpRequest类设计 请求部分 接收部分 关于上传和下载 Cpp实现 关于源码中的Lo ...
- SmartUpload类实现上传和下载
实现文件的上传与下载,可以使用Java的I/O流的类来实现,也可以使用专业的上传.下载组件.这些组件提供了现成的类,程序员只需调用这些类中的方法即可实现文件的上传与下载.本章将向读者介绍如何应用jsp ...
- android+nutz后台如何上传和下载图片
android+nutz后台如何上传和下载图片 发布于 588天前 作者 yummy222 428 次浏览 复制 上一个帖子 下一个帖子 标签: 无 最近在做一个基于android的ap ...
- JDFS:一款分布式文件管理实用程序第一篇(线程池、epoll、上传、下载)
一 前言 截止目前,笔者在博客园上面已经发表了3篇关于网络下载的文章,这三篇博客实现了基于socket的http多线程远程断点下载实用程序.笔者打算在此基础上开发出一款分布式文件管理实用程序,截止目前 ...
随机推荐
- 【Linux入门】
文件系统结构:倒树状: 文件命名规则: Windows 8.3的命名规则:文件名8位以内,后缀名3位以内 linux中隐藏文件的方式:在文件名称前面加. eg: 1.txt===> .1.t ...
- C# BackgroundWorker(异步线程)
日期:2018年11月28日 环境:Windows 10,VS2015 前言 .NET 类库中提供了一个快捷使用多线程的帮助类BackgroundWorker,能够快速创建一个新的线程,并能报告进度 ...
- BZOJ 1012【线段树】
题意: Q L 询问数列最后 L 个数中最大的数. A n 将 n + t ( t_init = 0 ), 然后插到最后去. 思路: 感觉动态地插入,很有问题. 数组地长度会时常变化,但是可以先预处理 ...
- 前端三部曲之Css-- 1(常见的居中方式)
下面来介绍一下web端页面最常见的居中方式 页面的基本结构:一个简单的div <!DOCTYPE html> <html lang="en"> <he ...
- 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
谷歌TPU是一个设计良好的矩阵计算加速单元,可以很好的加速神经网络的计算.本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化.推测和修改,来实际编写一个简单版本的谷歌TPU.计划实现到行为 ...
- springMVC容器加载源码分析
springmvc是一个基于servlet容器的轻量灵活的mvc框架,在它整个请求过程中,为了能够灵活定制各种需求,所以提供了一系列的组件完成整个请求的映射,响应等等处理.这里我们来分析下spring ...
- ligerUI弹出框
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组
题目描述 回忆树是一棵树,树边上有小写字母. 一次回忆是这样的:你想起过往,触及心底--唔,不对,我们要说题目. 这题中我们认为回忆是这样的:给定 \(2\) 个点 \(u,v\) (\(u\) 可能 ...
- 退役or延期退役
究竟是\(150\)天后退役,还是能继续续命呢? 一切看自己了!加油!\(cyh\)!千万不要败在别人的只言片语之下啊!
- spring事物的管理方式
Spring事务配置的五种方式 转载大神总结: https://blog.csdn.net/xuanjiewu/article/details/51604967: 自己总结:这里只总结spring编程 ...