广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP(文件上传、下载、删除、读取&写入)
  • 288
分享到

PHP(文件上传、下载、删除、读取&写入)

安全php 2023-09-04 11:09:43 288人浏览 八月长安
摘要

一、文件上传: 先构造一个html的上传页面 文件上传 action:是提交给谁处理,写upload.PHP的话就交由upload.php处理,为空就是自己处理  可以看到页面成功构造成

一、文件上传:

先构造一个html的上传页面

        文件上传

action:是提交给谁处理,写upload.PHP的话就交由upload.php处理,为空就是自己处理

 可以看到页面成功构造成功,接下来了解一下PHP_FILES这个函数

        文件上传

";echo $type."
";echo $size."
";echo $error."
";echo $tmpname."
";

上传一个图片看下效果

接下来熟悉一下move_uploaded_file() 函数

move_uploaded_file() 函数把上传的文件移动到新位置。

如果成功该函数返回 TRUE,如果失败则返回 FALSE

语法

move_uploaded_file(file,newloc)

file必需。规定要移动的文件。
newloc必需。规定文件的新位置。

在当前文件目录下有一个upload文件夹,把接收的文件移动到upload目录下,$name是获取的文件名字

if(!move_uploaded_file($tmpname,'upload/'.$name)){    echo '文件移动失败';}else{    echo '文件上传成功';    echo '/upload/'.$name;}

可以看到文件成功上传到指定位置

简单的进行一个判断是否是png的类型

if($type=='image/png'){    if(!move_uploaded_file($tmpname,'upload/'.$name)){        echo '文件移动失败';    }    else{        echo '文件上传成功';        echo '/upload/'.$name;    }}else{    echo '文件类型不正确';}

过滤更多后缀

explode()函数:使用一个字符串分割另一个字符串,并返回由字符串组成的数组

$name='shell.php';$Filenames = explode(".",$name);var_dump($Filenames);

看到结果:可以以  “.” 进行分割,并且是数组

array_pop()函数:弹出数组最后一个单元

可以看到是可以将后缀成功拿到

定义一个白名单数组,将上传的文件后缀拿出来判断是否在这个数组里面,操作是否要上传

$allowType = array("jpg", "png", "gif", "jpeg", "ico","zip");//允许的文件拓展名$Filenames = explode(".",$name); // 使用.分割$name$Filenamelast=array_pop($Filenames); // 取出数组的最后一个单元,也就是拿到后缀if($Filenamelast){   //判断是否上传了文件    if(in_array($Filenamelast,$allowType)){ //判断是否在这个数组里面        if(!move_uploaded_file($tmpname,'upload/'.$name)){            echo '文件移动失败';        }        else{            echo '文件上传成功';            echo '/upload/'.$name;        }    }    else{        echo '文件类型不正确';    }}

完整代码:

        文件上传

";echo $type."
";echo $size."
";echo $error."
";echo $tmpname."
";$allowType = array("jpg", "png", "gif", "jpeg", "ico","zip");//允许的文件拓展名$Filenames = explode(".",$name); // 使用.分割$name$Filenamelast=array_pop($Filenames); // 取出数组的最后一个单元,也就是拿到后缀if($Filenamelast){ //判断是否上传了文件 if(in_array($Filenamelast,$allowType)){ //判断是否在这个数组里面 if(!move_uploaded_file($tmpname,'upload/'.$name)){ echo '文件移动失败'; } else{ echo '文件上传成功'; echo '/upload/'.$name; } } else{ echo '文件类型不正确'; }}

二、文件下载

文件下载分两种

直连下载:Http://www.xxx.com/soft/软件.zip

参数下载:http://www.xxx.com/soft/down.php?filename=软件.zip

getchwd() 函数返回当前工作目录

scandir()  函数返回指定目录中的文件和目录的数组

function getfilename(){  //定义一个函数,将文件名拿出来    $filepath=getcwd();  //获取到当前路径    var_dump($filepath);    $filename=scandir($filepath.'/soft/');  //把当前路径下的soft文件夹下的东西都显示出来    var_dump($filename);}getfilename();

看下效果:

foreach 循环用于迭代一个列表或集合变量的值

function getfilename(){    $filepath=getcwd();  //获取到当前路径    $filename=scandir($filepath.'/soft/');  //把当前路径下的soft文件夹下的东西都显示出来    foreach ($filename as $value){  //将数组里的值遍历出来        if($value != '.' && $value != '..'){  //判断是否是正常的文件            $arr[]=$value;   //添加到$arr数组里面            echo $value.'
'; //将每一个文件名打印出来 } }}

看下效果: 可以成功将我们的文件名拿出来

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组

我们可以通过这个全局变量拿到一些相关信息

举个简单的例子:http://localhost/aaa/?p=222  

结果:

$_SERVER['QUERY_STRING'] = "p=222";

$_SERVER['REQUEST_URI']  = "/aaa/?p=222";

$_SERVER['SCRIPT_NAME']  = "/aaa/index.php";

$_SERVER['PHP_SELF']     = "/aaa/index.php";

$_SERVER['HTTP_HOST']   = "localhost"

更多$_SERVER的使用:$_SERVER参数的含义 (bbsmax.com)

定义一个函数,根据传进来的文件名能访问到它

function geturldown($name){      $url='http://'.$_SERVER['HTTP_HOST'].'/php-start/file/soft/'.$name;    echo $url;}

可以看到正常无参调用是这样的,如果传进参数就构成完整的url地址了 

修改一下之前的表单信息:接收前端输入的数据并调用geturldown这个函数

        文件下载

直连下载


传参下载

看下效果:可以将文件位置获取到,而下载文件只需要访问这个url就可以

PHP中header:可以用作重定向,有很多操作,下面利用重定向url地址,达到下载文件效果

PHP中header函数的用法及其注意事项详解_php实例_脚本之家 (jb51.net)

header重定向:

header(‘Location: http://www.phpthinking.com');

修改一下之前的代码,重定向一下

function geturldown($name){    $url='http://'.$_SERVER['HTTP_HOST'].'/php-start/file/soft/'.$name;    echo $url;    if($name){  //判断一下是否有传进来的参数,在决定跳转下载        header("location:$url");    }}

单引号的字符串是单纯的字符串 

双引号的字符串 里面的变量就是变量的值

输入文件名,下载成功:

 完整代码

        文件下载

直连下载


传参下载

'; } }}//直连下载函数function geturldown($name){ $url='http://'.$_SERVER['HTTP_HOST'].'/php-start/file/imgs/upload/'.$name; echo $url; if($name){ header("location:$url"); }}

三、文件删除

文件删除

文件夹删除

unlink()函数:删除文件

rmdir()函数:删除文件夹

直接用这两个函数即可

function delfilename($name){    @unlink($name);}function delfiledir($name){    @rmdir($name);}

还是用之前的代码替换一下函数即可

文件删除

需要删除的文件

文件夹删除

需要删除的文件夹
'; } }}function delfilename($name){ @unlink($name);}function delfiledir($name){ @rmdir($name);}

四、文件读取&写入

1)文件读取:

fopen() 函数:打开一个文件或 URL。

如果 fopen() 失败,它将返回 FALSE 并附带错误信息。可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

例子:$file = fopen("test.txt","r");

模式描述
r打开文件为只读。文件指针在文件的开头开始。
w打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+打开文件为读/写、文件指针在文件开头开始。
w+打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。

fread() 函数读取打开的文件。

fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

如下 PHP 代码把 "WEBdictionary.txt" 文件读至结尾:

fread($myfile,filesize(webdictionary.txt));

fclose() 函数用于关闭打开的文件。

function fileread($name){        $myfile = @fopen($name, "r");//打开$name文件        echo @fread($myfile,filesize($name));  //读取到结尾        @fclose($myfile); //关闭}

可以看到1.txt里面成功读取到123 

2)文件写入:

fwrite语法

fwrite(file,string,length)

参数描述
file必需。规定要写入的打开文件。
string必需。规定要写入打开文件的字符串。
length可选。规定要写入的最大字节数。

修改一下前端

需要写入的文件
需要写入的代码

稍微修改一下之前的代码

function filewrite($name,$txt){        $myfile = @fopen($name, "w+");        @fwrite($myfile,$txt);        @fclose($myfile);}

写入文件,在用读取文件读一下,成功

 

完整代码

        文件下载

文件读取

需要读取的文件

文件写入

需要写入的文件
需要写入的代码
'; } }}function fileread($name){ $myfile = @fopen($name, "r");//打开$name文件 echo @fread($myfile,filesize($name)); @fclose($myfile);}function filewrite($name,$txt){ $myfile = @fopen($name, "w+"); @fwrite($myfile,$txt); @fclose($myfile);}

来源地址:https://blog.csdn.net/fainpo/article/details/129624271

--结束END--

本文标题: PHP(文件上传、下载、删除、读取&写入)

本文链接: https://www.lsjlt.com/news/393444.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP(文件上传、下载、删除、读取&写入)
    一、文件上传: 先构造一个html的上传页面 文件上传 action:是提交给谁处理,写upload.php的话就交由upload.php处理,为空就是自己处理  可以看到页面成功构造成...
    99+
    2023-09-04
    安全 php
  • 对象存储MinIO(实现文件上传、读取、下载、删除)
    一、 MinIO         MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服 务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/ 虚拟机镜...
    99+
    2023-08-31
    spring boot java mysql
  • SpringBoot整合MongoDB实现文件上传下载删除
    目录本文主要内容 1. 基础命令 2. GridFsTemplate使用 2.1引入pom依赖2.2 配置yml2.3 上传下载删除 本文主要内容 MongoDB基础操作...
    99+
    2022-11-12
  • PHP入门指南:文件上传和下载
    在Web开发中,文件的上传和下载是一个非常常见的需求。无论是用户上传头像、文档,还是管理员让用户下载某个文件,都需要用到这个功能。而PHP作为一个强大的服务器端语言,自然也提供了强大的文件操作函数和类库,让我们可以轻松实现文件上传和下载功能...
    99+
    2023-05-22
    文件上传 文件下载 PHP入门
  • SpringBoot使用FTP操作文件的过程(删除、上传、下载文件)
    目录简介配置 FTPSpringBoot 编码配置 Nginx简介 使用 SpringBoot 配置 FTP 服务器,上传、删除、下载文件。 配置 FTP 检查是否安装 vsftpd...
    99+
    2022-12-20
    SpringBoot FTP 操作文件 SpringBoot FTP 操作文件
  • Java实现minio上传、下载、删除文件,支持https访问
    MinIO 是一款高性能、分布式的对象存储系统,Minio是基于Go语言编写的对象存储服务,适合于存储大容量非结构化的数据,例如图片、音频、视频、备份数据等,传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。 一、配置 导入...
    99+
    2023-09-03
    java spring https Powered by 金山文档
  • docker怎么安装minio及实现文件上传、删除、下载
    这篇文章主要介绍“docker怎么安装minio及实现文件上传、删除、下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker怎么安装minio及实现文件上传、删除、下载”文章能帮助大家解决问...
    99+
    2023-07-05
  • 【PHP】文件写入和读取详解
    一.实现文件读取和写入的基本思路: 1.通过fopen方法打开文件:$fp =fopen(),fp为Resource类型 2.进行文件读取或者文件写入操作(这里使用的函数以1中返回的$fp作为参数)   调用fclose($fp)关闭关闭...
    99+
    2023-09-02
    php 数学建模 开发语言
  • php读取与写入文件(详解)
    作者名:Demo不是emo  主页面链接:主页传送门创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程...
    99+
    2023-08-31
    php 开发语言
  • php读取zip文件(删除文件,提取文件,增加文件)实例
    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代码如下复制代码...
    99+
    2023-09-03
    php 开发语言
  • PHP文件的写入与读取基础
    1.PHP文件的写入与读取基础 先看图片与代码: 具体代码文本: ...
    99+
    2023-09-02
    php 开发语言 html5 html
  • PHP读取和写入CSV文件的代码写
    这篇文章主要介绍“PHP读取和写入CSV文件的代码写”,在日常操作中,相信很多人在PHP读取和写入CSV文件的代码写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP读取和写入CSV文件的代码写”的疑惑有所...
    99+
    2023-07-06
  • UniApp写入读取android本地文件,不会被清除
           项目背景,我们是用uniapp编写的收银程序,然后打包到android工程,再打包成apk包安装到用户的收银机上,收银机是android系统。由于项目需求,每次升级我们收银系统版本后,之前连接的打印机和LED显示屏的缓存数据都...
    99+
    2023-09-04
    android uni-app
  • PHP学习笔记:文件上传与下载
    引言:在现代网络应用中,文件上传与下载是非常常见的功能需求。无论是用户上传图片、音频、视频等文件,还是用户下载网站提供的资源文件,文件上传与下载都是必不可少的功能之一。本文将介绍如何使用PHP语言实现文件上传与下载功能,并提供具体代码示例,...
    99+
    2023-10-21
    文件上传 文件下载 PHP学习
  • Java 使用OSS 文件上传+下载 简单入门
    官方SDK文档:Java对象/文件_对象存储-阿里云帮助中心   开始使用OSS         阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,可以通过网络随时存储和调...
    99+
    2023-09-03
    java 阿里云
  • SpringMVC深入讲解文件的上传下载实现
    目录SpringMVC文件下载SpringMVC文件上传1.基本介绍2.需求分析/图解3.应用实例4.Debug-file.transferTo(目标文件)SpringMVC文件下载...
    99+
    2022-11-13
  • php 文件上传至OSS及删除远程阿里云OSS文件
    删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'https://hxty.oss-cn-beijing.aliyuncs.com/data/pdf/contrac...
    99+
    2022-11-12
  • php如何实现文件的上传和下载
    这篇文章将为大家详细讲解有关php如何实现文件的上传和下载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Pe...
    99+
    2023-06-14
  • php上传文件写入失败如何解决
    这篇文章主要讲解了“php上传文件写入失败如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php上传文件写入失败如何解决”吧!php上传文件写入失败是因为上传文件临时文件夹空间内存不够...
    99+
    2023-06-20
  • PHP读取和写入CSV文件的示例代码
    目录1. 什么是 CSV 文件2. 从 CSV 文件中读取数据3. 将数据写入 CSV 文件1. 什么是 CSV 文件 CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的...
    99+
    2023-05-15
    PHP读取CSV文件 PHP写入CSV文件 PHP CSV文件 PHP CSV
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作