用PHP实现一个简易版文件上传功能(超详细讲解)
1. php简化版的图片上传(没有各种验证)
1 2 3 4 |
|
首先我们需要在form表单中加入 enctype=”multipart/form-data”表示声明表单中会有图片发送, action=”” 表示当前页面提交,method=”post”传输方式为post
1 2 3 4 5 6 7 8 9 10 11 12 |
|
关键词总结
is_uploaded_file 表示验证文件是否是通过 HTTP POST 上传的,条件成立才可以正常上传
$_FILES[‘upfile’][‘tmp_name’]) 表示获取到当前传输图片的本地位置
move_uploaded_file($tmp_name,’up/’.$name); ,该方法有两个参数,第一个为上传的文件的文件名,第二个为移动文件到这个位置
2. 文件的写入与读取
首先介绍写入:
1 2 3 4 |
|
其中fopen函数的作用为写入数据,第一个参数为写入文件具体路径,第二个表示将读取到得数据放入该文件中,其中文件名采用时间戳加上随机数构成,后缀名为comment,a表示写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建它,or die表示执行失败,就执行Unable to open file!(无法打开文件)。
第二句表示数据,数据可以是post传输的,也可以是get,随意
第三句fwrite表示写入文件,第一个参数为写入文件的位置,第二个为要写入的数据
第四句表示关闭该文件,表示写入完毕,本次执行完毕
1 2 3 4 5 6 7 8 9 10 |
|
在介绍读取:
关键语句为
第一句:首先使用(glob)先找到需要读取的文件,如果有很多符合条件的文件,那么他们将会使用数组进行保存,读取的时候使用遍历数组就可以了
第二句: rsort为降序排序,主要是为了满足特定条件下的排序,例如按照发布时间
第三句:因为可以通过var_dump,print等知道glob是以数组的形式保存路径的,所以我们使用count算出总数,然后一条条遍历,便可以得到需要读取的文件路径
第四句:$file_path获取文件路径
第五句:file_exists判断文件是否存在
第六句:fopen读取该文件,并且以只读的方式打开
第七句:fread第一个参数表示读取的东西,第二个表示读取的文件的大小,这里也就表示有多少读多少
第八句:str_replace替换函数,表示将$str中的所有的\r\n都替换成br(表示换行,换成网页中的换行)
用PHP实现一个简易版文件上传功能(超详细讲解)的更多相关文章
- 使用element的upload组件实现一个完整的文件上传功能(下)
本篇文章是<使用element的upload组件实现一个完整的文件上传功能(上)>的续篇. 话不多说,接着上一篇直接开始 一.功能完善—保存表格中每一列的文件列表状态 1.思路 保存表格中 ...
- 使用element的upload组件实现一个完整的文件上传功能(上)
说到标题就有点心塞了,前段时间项目上需要实现一个文件上传的功能,然后就咔咔的去用了element的upload组件,不用不知道一用吓一跳哇. 在使用的过程中遇到了很多让意想不到的问题,后来也因为时间问 ...
- 简易版php文件上传_超详细详解
1.php简化版的图片上传(没有各种验证) 1234 <form action="" enctype="multipart/form-data" meth ...
- 如何实现一个简易版的 Spring - 如何实现 AOP(上)
前言 本文是「如何实现一个简易版的 Spring 系列」的第五篇,在之前介绍了 Spring 中的核心技术之一 IoC,从这篇开始我们再来看看 Spring 的另一个重要的技术--AOP.用过 Spr ...
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...
- 手动实现一个简易版SpringMvc
版权声明:本篇博客大部分代码引用于公众号:java团长,我只是在作者基础上稍微修改一些内容,内容仅供学习与参考 前言:目前mvc框架经过大浪淘沙,由最初的struts1到struts2,到目前的主流框 ...
- 如何实现一个简易版的 Spring - 如何实现 Setter 注入
前言 之前在 上篇 提到过会实现一个简易版的 IoC 和 AOP,今天它终于来了...相信对于使用 Java 开发语言的朋友们都使用过或者听说过 Spring 这个开发框架,绝大部分的企业级开发中都离 ...
- 如何实现一个简易版的 Spring - 如何实现 @Component 注解
前言 前面两篇文章(如何实现一个简易版的 Spring - 如何实现 Setter 注入.如何实现一个简易版的 Spring - 如何实现 Constructor 注入)介绍的都是基于 XML 配置文 ...
- DI 原理解析 并实现一个简易版 DI 容器
本文基于自身理解进行输出,目的在于交流学习,如有不对,还望各位看官指出. DI DI-Dependency Injection,即"依赖注入":对象之间依赖关系由容器在运行期决定, ...
随机推荐
- 变量 + 数据类型(数字 + 字符串)(day03整理)
目录 一.上节课回顾 四 编程语言分类 (一) 机器语言 (二)汇编语言 (三) 高级语言 (四) 网络瓶颈效应 五.执行python程序两种方式 (一) 交互式(jupytre) (二) 命令行式( ...
- mysql获取刚插入(添加)记录的自动编号id
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...
- Swift UIViewController中的delegate方式传值
ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...
- Codeforces Round #595 (Div. 3)D1D2 贪心 STL
一道用STL的贪心,正好可以用来学习使用STL库 题目大意:给出n条可以内含,相交,分离的线段,如果重叠条数超过k次则为坏点,n,k<2e5 所以我们贪心的想我们从左往右遍历,如果重合部分条数超 ...
- Everything可能泄漏大量电脑敏感资料
一款好用的文件搜索工具Everything被批露出现重大问题: Everything可以打开http服务,在没有加密的情况下任何外网电脑都可以连接的. 因此,Everything可能泄漏大量电脑敏感资 ...
- CTR@模型整体架构
1. 推荐系统 1.1 总体框架 主要包括:样本选择.数据清洗.特征提取与选择.模型训练.在线预估和排序. 1.2 目的 帮助用户找到想要的商品,挖掘数据分布. 降低信息过载. 提高站点的点击率/转化 ...
- H5与CSS3常用设置
1.设置div铺满全屏 对于一个div1,要使其属性height:100%生效,需要使其所有父元素,有确定的属性height.要铺满全屏,就是从html开始,所有的height为100%. 2.垂直居 ...
- 使用 HTML5 WebSocket 构建实时 Web 应用
原文地址:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ HTML5 WebSocket 简介和实战演练 本文主要介绍 ...
- NOI1995 石子合并 [Luogu P1880]
一道区间dp的模板题,这里主要记一下dp时环形数据的处理. 简略版:方法一:枚举分开的位置,将圈化为链,因此要做n次. 方法二:将链重复两次,即做一个2n-1长度的链,其中第i(i<=n)堆石子 ...
- Data Compression Category
Data Compression is an approach to compress the origin dataset and save spaces. According to the Eco ...