当前位置: 首页 > 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…...

2026最权威的五大AI辅助写作神器解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 随着人工智能技术发展得格外迅猛,学术领域对于AI相关论文的需求增长得越来越快。…...

从平台束缚到自由聆听:ncmdump如何让加密音乐重获新生?

从平台束缚到自由聆听:ncmdump如何让加密音乐重获新生? 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的困境?在某个音乐平台精心收藏的歌单,却无法在车载音响上…...

FanControl深度指南:智能散热系统的架构解析与实战优化

FanControl深度指南:智能散热系统的架构解析与实战优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

TX12 + ExpressLRS 915MHz RC链路优化与EdgeTX固件升级实战

1. 为什么选择TX12搭配ExpressLRS 915MHz系统 玩无人机的朋友都知道,遥控链路就像风筝线,距离和稳定性直接决定飞行体验。我之前用2.4GHz的RadioLink套装,飞到500米就开始心跳加速——信号时断时续,每次返航都像在赌运气。换成TX1…...

Local Moondream2一键部署方案:省去依赖冲突的烦恼快速运行

Local Moondream2一键部署方案:省去依赖冲突的烦恼快速运行 1. 项目介绍 Local Moondream2 是一个基于 Moondream2 模型构建的超轻量级视觉对话 Web 界面。它能让你的电脑真正拥有"眼睛",可以对上传的图片进行智能分析。 这个工具的核心功能…...

Nginx 高可用、负载均衡与 HTTPS 配置实战(一)

Nginx作为当下最主流的开源反向代理与Web服务器,凭借轻量、高性能、高并发的特性,成为企业级服务入口的首选方案。在生产环境中,单节点Nginx存在单点故障风险,并发请求过高会导致服务卡顿,同时HTTP明文传输存在数据泄露…...

HoRain云--Julia运算符全解析

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...

KMS_VL_ALL_AIO:Windows和Office智能激活的革命性解决方案

KMS_VL_ALL_AIO:Windows和Office智能激活的革命性解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office激活问题烦恼吗?KMS_VL_ALL_AIO是一款创…...

AI 焦虑别乱投!3 个问题秒懂要不要养「虾」

作者 | 张辉清 责编 | 梦依丹出品 | 程序人生(ID:coder_life)当下 AI 热度居高不下,企业该如何抉择?是大举投入布局,还是保持观望?我们借以下三个问题来展开思考。AI 当下处在什么阶段&#xf…...

Windows 10下SQLMap安装配置全攻略(附Python环境搭建)

Windows 10下SQLMap实战指南:从Python环境搭建到高级配置 在渗透测试和安全研究领域,SQLMap无疑是数据库安全检测的瑞士军刀。这款开源工具能够自动检测和利用SQL注入漏洞,支持几乎所有主流数据库系统。但对于Windows用户,特别是刚…...