当前位置: 首页 > news >正文

php处理文件上传的五种方式

 dd($_FILES);
        //方式一
        if(!empty($_FILES['file'])){
            //获取文件后缀方式一
            //strrchr()函数查找字符在指定字符串中从右面开始的第一次出现的位置,
            //如果成功,返回该字符以及其后面的字符,如果失败,则返回 false
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            
//             //获取文件后缀方式二
//             $arr = explode('.', $_FILES['file']['name']);
//             //文件后缀
//             $extension = end($arr);
//             //文件名
//             $file_name = time().mt_rand(10000,99999).'.'.$extension;
            
            //目录
            $dir = './uploads/111/222/';
            //判断目录是否存在方式一
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            
//             //判断目录是否存在方式二
//             if(!file_exists($dir)){
//                 if(!mkdir($dir,0755,true)){
//                     return '创建目录失败';
//                 }
//             }
            if(move_uploaded_file($_FILES['file']['tmp_name'], $dir.$file_name)){
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式二
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            if(copy($_FILES['file']['tmp_name'], $dir.$file_name)){
                @unlink($_FILES['file']['tmp_name']);
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式三
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            if(rename($_FILES['file']['tmp_name'], $dir.$file_name)){
                return 'success';
            }else{
                return 'error';
            }
        }
        
        //方式四
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            $data = file_get_contents($_FILES['file']['tmp_name']);
            if(file_put_contents($dir.$file_name, $data)){
                @unlink($_FILES['file']['tmp_name']);
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式五
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            
            $targetFilename = $dir.$file_name;
            $sourceHandle = fopen($_FILES['file']['tmp_name'], 'rb');
            $targetHandle = fopen($targetFilename, 'wb');
            while (!feof($sourceHandle)){
                //每次处理1M的字节
                $content = fread($sourceHandle, 1024 * 1024);
                fwrite($targetHandle, $content);
            }
            fclose($sourceHandle);
            fclose($targetHandle);
            if(file_exists($targetFilename)){
                return 'success';
            }else{
                return 'error';
            }
        }
        
        //多文件上传
        if(!empty($_FILES['file'])){
            $fail_arr = [];
            foreach ($_FILES['file']['name'] as $k=>$v){
                $extension = strrchr($_FILES['file']['name'][$k], '.');
                if(!$extension){
                    return '文件后缀错误';
                }
                $file_name = time().mt_rand(10000,99999).$extension;
                //目录
                $dir = './uploads/111/222/';
                //判断目录是否存在方式一
                if(!is_dir($dir)){
                    if(!mkdir($dir,0755,true)){
                        return '创建目录失败';
                    }
                }
                if(!move_uploaded_file($_FILES['file']['tmp_name'][$k], $dir.$file_name)){
                    $fail_arr[] = $_FILES['file']['name'][$k];
                }
            }
            if(empty($fail_arr)){
                return 'success';
            }else{
                return $fail_arr;
            }
        }

相关文章:

php处理文件上传的五种方式

dd($_FILES); //方式一 if(!empty($_FILES[file])){ //获取文件后缀方式一 //strrchr()函数查找字符在指定字符串中从右面开始的第一次出现的位置, //如果成功,返回该字符以及其后面的字符&#xf…...

C#与C++交互开发系列(十一):委托和函数指针传递

前言 在C#与C的互操作中,委托(delegate)和函数指针的传递是一个复杂但非常强大的功能。这可以实现从C回调C#方法,或者在C#中调用C函数指针的能力。无论是跨语言调用回调函数,还是在多线程、异步任务中使用委托&#x…...

【window】补充一些powershell基本命令

刚才说了一下如何用powershell管理,下边是一些常见的 PowerShell 命令及其参数的示例,补充给大家: 1. 获取帮助 Get-Help:获取命令的帮助信息。 Get-Help Get-Process Get-Help Get-Process -Examples Get-Help Get-Process -Fu…...

精准触达用户,私域三步法!

发现没?现在很多人都开始利用私域来增加潜在的客户,维护现有客户。而在私域管理中,精准触达用户是非常重要的一环。 接下来,就和大家聊聊私域精准触达用户的三个方法,让你可以实现精准营销。 1、数据分析与用户画像构…...

Tcl脚本介绍(一)

芯冰乐知识星球入口:芯冰乐 TCL就是Tool Command Language的简称,广泛应用在各大eda工具中。 EDA工具能够高度自动化的运行得益于TCL。 用户在编写完相关的tcl脚本后,让eda工具自动运行,便能够很大程度地解放双手了。 其实,网络上介绍TCL脚本的课程层出不穷了。应很多粉…...

安全运营 -- 监控linux命令history

0x00 背景 最近,有个IT的同事给我提了一个需求,说想监控/root/.ssh/ 文件夹下的文件变动,于是我灵机一动,这个需求只要对执行过的历史命令做审计就可以了。 0x01 实践 我实现这个功能使用 rsyslog 和 firewalld 两个组件。 我的…...

MyBatis3(动态SQL 常用的动态SQL 元素 映射器注解 基本注解 结果映射注解)

动态SQL 什么是MyBatis的动态SQL? **定义:**根据不同的条件拼接SQL语句,实现对数据库更准确的操作; **实现:**映射器配置文件或者注解 常用的动态SQL元素 if 元素:判断语句,单条件分 支判断…...

C#自定义事件的案例

方法一,详细的声明 namespace HelloWorldConsole {internal class Program{static void Main(string[] args){Customer customer new Customer();Waiter waiter new Waiter();customer.Order waiter.Action;customer.Action();}}public class OrderEventArgs : …...

flume系列之:flume机器做条带划分提高磁盘性能和吞吐量的详细步骤

flume系列之:flume机器做条带划分提高磁盘性能和吞吐量的详细步骤 磁盘条带划分新磁盘直接条带划分步骤有数据的磁盘做条带划分步骤磁盘条带划分 磁盘条带划分是将一个文件或数据块分散存储在多个物理磁盘上的技术。它可以提高磁盘的性能和吞吐量。以下是磁盘做了条带划分后可…...

C++基于opencv的视频质量检测--图像清晰度检测

文章目录 0.引言1. 原始算法实现2. 优化思路3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像清晰度检测已在C基于opencv4的视频质量检测中有所介绍,本文将详细介绍其优化版本。 1. 原始算法实现 原始代码: double sharpnessDetect(const cv::Ma…...

力扣11.1

2518. 好分区的数目 给你一个正整数数组 nums 和一个整数 k 。 分区 的定义是:将数组划分成两个有序的 组 ,并满足每个元素 恰好 存在于 某一个 组中。如果分区中每个组的元素和都大于等于 k ,则认为分区是一个好分区。 返回 不同 的好分区…...

打印室预约系统|基于java和小程序的打印室预约系统设计与实现(源码+数据库+文档)

打印室预约系统 目录 基于java和小程序的打印室预约系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#x…...

操作系统-多线程案例

一、单例模式(是一种设计模式) 设计模式有很多种,不同的语法中也有不同的设计模式 单例 单个实例(对象) 某个类,在一个进程中,只应该创建出一个实例,(原则上不该有多个&#xff…...

什么是FUSE用户态文件系统

零. 文件系统 1. 为什么要有文件系统 文件系统是操作系统中管理文件和目录的一种机制。它提供了组织、存储、检索和更新文件的方法,主要如下: 数据组织:文件系统将数据组织成文件和目录,使用户能够更方便地管理和查找文件。每个…...

[每日一练]销售分析(通过数据的0/1转换进行是否存在的查询)

#该题目来源于力扣: 1083. 销售分析 II - 力扣(LeetCode) 题目要求: 表:Product----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varch…...

.NET Core WebApi第7讲:项目的发布与部署

一、理解 前端跟后端拿数据,然后在前端页面中展示,就是我们要完成的事情。 把前端跟后端开发好之后,我们需要落地部署,这个时候就需要一个服务器。 服务器就是一台电脑,只要windows里面有一个叫IIS的管理器。 二、项目…...

【python 将数据写入csv文件】正确方式

data [{username: jack, password: 1234}, ……]# 保存为CSV文件 with open(IP_output.csv, w, newline, encodingutf-8) as file:fieldnames [username, password]writer csv.DictWriter(file, fieldnamesfieldnames, quotingcsv.QUOTE_NONE)writer.writeheader() # 写入列…...

OpenCV4.8 开发实战系列专栏之 10 - 像素值统计

大家好,欢迎大家学习OpenCV4.8 开发实战专栏,长期更新,不断分享源码。 专栏代码全部基于C++ 与Python双语演示,专栏答疑群 请联系微信 OpenCVXueTang_Asst 本文关键知识点:像素值统计 最小(min)最大(max)均值(mean)标准方差(standard deviation)API知识点 最大最小值min…...

pandas计算相关性并画热力图

实现这个功能有很多方法,但是下面的方法还是比较优雅的: cols ["ASSET", "HOUSES", "INCOME", "DEBT", "EDUC"] corr df[cols].corr() corr.style.background_gradient(axisNone)讲解: …...

初始Docker

概述: 容器,作为云原生技术的重要组成部分,与虚拟机一样,均属于虚拟化技术的范畴。然而,容器技术以其独特的优势,在虚拟化领域中脱颖而出。与虚拟机不同,容器能够摆脱操作系统的束缚&#xff0…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...