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()函数查找字符在指定字符串中从右面开始的第一次出现的位置, //如果成功,返回该字符以及其后面的字符…...
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…...
操作系统-多线程案例
一、单例模式(是一种设计模式) 设计模式有很多种,不同的语法中也有不同的设计模式 单例 单个实例(对象) 某个类,在一个进程中,只应该创建出一个实例,(原则上不该有多个ÿ…...
什么是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
概述: 容器,作为云原生技术的重要组成部分,与虚拟机一样,均属于虚拟化技术的范畴。然而,容器技术以其独特的优势,在虚拟化领域中脱颖而出。与虚拟机不同,容器能够摆脱操作系统的束缚࿰…...
用Rsoft DiffractionMOD给光伏减反膜‘算个命’:手把手教你仿真矩形光栅的反射谱
用Rsoft DiffractionMOD给光伏减反膜‘算个命’:手把手教你仿真矩形光栅的反射谱 在光伏组件研发中,减反射膜的性能直接影响着光电转换效率。传统试错法需要反复镀膜测试,成本高周期长。本文将演示如何通过Rsoft DiffractionMOD模块ÿ…...
Auto-Lianliankan:3步实现Python图像识别破解连连看
Auto-Lianliankan:3步实现Python图像识别破解连连看 【免费下载链接】Auto-Lianliankan 基于python图像识别实现的连连看外挂,可实现QQ连连看秒破 项目地址: https://gitcode.com/gh_mirrors/au/Auto-Lianliankan 在游戏自动化领域,Au…...
Petrel地质建模许可不够用?自动回收,油气勘探团队高效
你是不是也遇到这种情况?项目组突然来了个新成员,结果所有许可都满了,连老员工都得排队等。别慌,我搞懂了,Petrel许可不够用,最大的问题就是没回收,几十万的授权就浪费在没人用的角落。 闲置许…...
保姆级教程:用PHPStudy+Nginx一键部署新麦同城V3开源版(附数据库配置避坑点)
零基础30分钟部署新麦同城V3:PHPStudyNginx全流程避坑指南 第一次接触本地部署开源系统时,最怕的不是代码复杂,而是明明按教程操作却卡在某个配置环节。本文将以真实踩坑记录为核心,手把手带你在Windows环境下用PHPStudy快速搭建…...
专业音频捕获终极指南:OBS-ASIO插件3步实现超低延迟录音
专业音频捕获终极指南:OBS-ASIO插件3步实现超低延迟录音 【免费下载链接】obs-asio ASIO plugin for OBS-Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-asio 在专业音频制作和直播领域,实现毫秒级延迟的音频捕获是确保音视频完美同步…...
从ST转战小华HC32F448:一个电机控制老兵的实战避坑与快速上手指南
从ST转战小华HC32F448:一个电机控制老兵的实战避坑与快速上手指南 当国产MCU的性价比优势逐渐凸显,越来越多的工程师开始关注小华半导体这类新兴玩家。作为深耕电机控制领域多年的开发者,我最近在变频器项目中尝试了HC32F448这颗芯片…...
力扣算法面试150题——个人笔记——复习用
双指针 第一题: 125. 验证回文串https://leetcode.cn/problems/valid-palindrome/ 题目内容 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母…...
照片直播如何实现?Android 通过 PTP/MTP 有线连接相机的技术方案
一、应用场景 在婚礼摄影、赛事记录、电商拍摄等业务中,客户往往希望: 摄影师按下快门,手机或平板立刻能看到照片。 常见传输方式的对比: 方式 问题 WiFi 延迟高、断连频繁 蓝牙 传输速度慢 有线 OTG ✅ 稳定、实时、低…...
别再手动分片了!用SeaweedFS的Chunk机制搞定海量小文件存储(Docker实战)
别再手动分片了!用SeaweedFS的Chunk机制搞定海量小文件存储(Docker实战) 当你的图片上传服务每天新增百万级文件时,传统存储方案往往会突然"罢工"——目录遍历耗时从秒级飙升到分钟级,inode耗尽导致服务崩溃…...
KUKA机器人FSoE安全地址丢了别慌!手把手教你用WorkVisual 6.0找回(附KRC4标准柜地址表)
KUKA机器人FSoE安全地址丢失应急修复指南:WorkVisual 6.0实战全解析 当产线突然报警停机,示教器闪烁"FSoE安全地址丢失"的红色警告时,经验丰富的维护工程师都知道——这往往是EtherCAT网络拓扑结构异常引发的紧急故障。尤其在采用K…...
