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;
            }
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

git仓库分支

操作 切换分支 git checkout 1.2.5 git checkout 1.3.0 使用命令切换分支之后,代码内容加载过后也是切换好的

突破挑战,创新前行 | 生信科技SOLIDWORKS 2025新品发布会·合肥站精彩回顾

2024年10月18日,由生信科技举办的首场SOLIDWORKS 2025新产品发布会在安徽合肥圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能,探索制造业数字化转型之路。 合肥站活动日,由生信科技副总经理徐建开场。他以智造无界&…

《C Primer Plus》中文版第十六章习题

16.17 复习题 1. 下面的几组代码由一个或多个宏组成,其后是使用宏的源代码。在每种情况下代码的结果是什么?这些代码是否是有效代码?(假设其中的变量已声明)。 a. #define FPM 5280 dist FPM * miles; b. #define FEET 4 #define POD FEET FEET plort …

15分钟学 Go 第 26 天:基本的Web服务

第26天:基本的Web服务 学习目标 在这一节中,我们将学习如何创建一个简单的HTTP服务器。我们将介绍Go语言中的net/http包,具体实现一个基本的Web服务,同时理解HTTP请求和响应的基本概念。 1. Go的HTTP服务器概述 Go语言内置的n…

Linux·进程间通讯(管道)

从本节开始将使用vscode写代码,语言也切换成C,同时OS从centOS换成ubentu。 进程之间可能存在数据传输、资源共享、通知事件、进程控制等需求,但是进程又具有独立性,所以就需要专门的进程间通讯技术(ipc)来满足需求。进程间通讯(IP…

人工智能与伦理:我们应该如何平衡科技与人性?

内容概要 在这个瞬息万变的时代,人工智能的迅猛发展让我们面对前所未有的伦理困境。科技进步带来了便利,但同时也亟需我们反思如何对待人性。尤其是在实现算法透明性时,我们要确保每一个决策背后都能被理解与追溯,这不仅是对技术…

云服务器排查微信支付接口异常

1.官方文章 网络云排查工具安装方法 - 腾讯客服 2.官方文章 网络云排查工具使用常见场景以及排查方法 - 腾讯客服 3.商户平台查看 网络波动和实际接口日志出问题时间对照

前端内存空间(堆、栈、队列、拷贝、垃圾回收)

在了解前端内存空间前,我们先学习三种基本数据结构:堆、栈、队列。 栈 栈是一种线性的数据结构,它遵循后进先出(LIFO)的原则。栈的特点是只能在栈顶进行插入和删除操作,因此栈的底部是栈中的最小值。 栈是…

浮动+flex布局

一.浮动 1.介绍 2.效果 <style> .one{ width: 100px; height: 100px; background-color: red; float: left; } .two{ width: 200px; height: 200px; background-color: blue; float: right; } </style> </head> <body> <div class"one&quo…

安全日志记录的重要性

1024程序员节不仅是对技术的庆祝&#xff0c;也是我们审视自己工作中责任的重要时刻。在现代信息安全体系中&#xff0c;安全日志记录是最关键的环节之一。它不仅能帮助企业或开发者及时发现安全威胁&#xff0c;还能在事后追踪攻击源、分析事件并采取补救措施。因此&#xff0…

架构师备考-系统分析与设计(结构化方法)

定义 1978年&#xff0c;E.Yourdon 和 L.L.Constantine 提出了结构化方法&#xff0c;即 SASD 方法&#xff0c;也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon 方法是20世纪80年代使用最广泛的软件开发方法。 结构化方法提出了一组提高软件结构合…

正点原子阿尔法ARM开发板-IMX6ULL(十二)——驱动开发的简单介绍

文章目录 一、前言二、Linux驱动开发思维三、驱动开发分类四、应用程序和驱动的交互原理五、字符设备驱动开发流程 一、前言 也终于是到了这个最是激动人心的时刻了&#xff0c;那个也是从本科&#xff0c;就听说过的词汇&#xff0c;非常的让人神往&#xff0c;这个词对我而言…

人工智能原理实验二:搜索方法

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程&#xff0c;通过实验&#xff0c;帮助学生更好地掌握人工智能相关概念、技术、原理、应用等&#xff1b;通过实验提高学生编写实验报告、总结实验结果的能力&#xff1b;使学生对智能程序、智能算法等…

Chromium 中chrome.fontSettings扩展接口定义c++

一、chrome.fontSettings 使用 chrome.fontSettings API 管理 Chrome 的字体设置。 权限 fontSettings 要使用 Font Settings API&#xff0c;您必须在扩展程序中声明 "fontSettings" 权限 清单。例如&#xff1a; {"name": "My Font Settings E…

npm install | npm ERR! Incorrect or missing password.

前端项目更新&#xff0c;执行npm install 安装依赖的时候&#xff0c;经常会出现一些莫名奇妙的问题&#xff0c;其中由于开发在本地编写的时候&#xff0c;可能会引用一些私有包&#xff0c;部署到服务器时就会出现问题&#xff0c;下面是排查过程。 npm ERR! code E401 npm …

C++——写一函数,将一个3x3的整型矩阵转置。用指针或引用方法处理。

没注释的源代码 #include <iostream> using namespace std; void move(int *p); int main() { int a[3][3],*p; cout<<"please input matrix:"<<endl; for(int i0;i<3;i) { for(int j0;j<3;j) { …

React + SpreadJS 开发时常见问题

在使用React与SpreadJS进行开发时&#xff0c;可能会遇到各种各样的问题。以下是一些常见的问题及其解决建议&#xff1a; 1. SpreadJS初始化失败 问题描述&#xff1a; 有时候SpreadJS的初始化可能会失败&#xff0c;特别是在React组件的生命周期内不当的初始化时机。 解决…

【AI应用】大模型工具如何助力文字创意工作(提示词Prompt+谷歌NotebookLM)

出发点&#xff1a;身处信息碎片和过载的时代&#xff0c;如何在日常工作学习中汇总并高效梳理知识&#xff1f;普通用户又如何激发AI大模型产出高质量的结果呢&#xff1f;本文将给出这两个问题的一些解决思路。 0、提纲&#xff1a; 提示词工程应知应会NotebookLM惊艳登场总…

springboot 使用 weixin-java-pay 支付demo

springboot引入依赖 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>4.6.0</version></dependency>配置 wx:pay:appId: *********mchId: ********apiV3Key: ******…