搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
运维做开发
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
如何判断模型过拟合?那些手段解决过拟合?_模拟训练过程中如何判断发生过拟合现向
2
2024年Go最新Nginx源码分析 - 初探Nginx的架构(01)(5),2024年最新腾讯+字节+阿里面经真题汇总_nginx源码目录
3
vue.js 三种方式安装(vue-cli)_vue安装
4
imx6ul链接地址、运行地址、加载地址、位置无关、mmu的关系_bootrom链接地址
5
Hash算法总结_hash算法整数
6
华为OD机试D卷 --篮球游戏--24年OD统一考试(Java & JS & Python & C & C++)
7
脏牛提权(靶机复现)
8
CSDN资源共享规范_csdn 上传资源涉嫌广告
9
PyCharm 2024.1.1 构建GUI用户界面 — 附安装教程_pycharm编写gui界面
10
【干货】每个APP都用得上的SegmentView
当前位置:
article
> 正文
php文件上传类可自动创建文件夹_php 生成自动创建文件夹并上传文件的示例代码
作者:运维做开发 | 2024-06-25 15:51:23
赞
踩
php 生成自动创建文件夹并上传文件的示例代码
<?php
/*
* 文件上传类
upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :构造函数 参数(保存路径,上传格式,上传最大字节数,是否覆盖同名文件)
* 实例:
<form action="f.php" method="post" enctype="multipart/form-data">
//上传单文件
if(isset($_FILES["files"]))
{
$filear=array();
$filear = $f->upload("files");//返回上传后文件名
echo $filear;
}
//上传多个不同文件域名称文件
if(isset($_FILES){
foreach($_FILES as $key=>$val)
$filear[] = $f->upload($key);//返回上传后文件名数组
}
*/
class
upfile{
//上传文件信息
var
$filename
;
// 保存名
var
$savename
;
// 保存路径
var
$savepath
;
// 文件格式限定,为空时不限制格式
var
$format
=
""
;
// 覆盖模式
var
$overwrite
= 0;
/* $overwrite = 0 时不覆盖同名文件
* $overwrite = 1 时覆盖同名文件
*/
//文件最大字节
var
$maxsize
= 210000000;
//文件扩展名
var
$ext
;
/* 构造函数
* $path 保存路径
* $format 文件格式(用逗号分开)
* $maxsize 文件最大限制,0为默认值
* $over 复盖参数
*/
function
upfile(
$path
=
"./"
,
$format
=
""
,
$maxsize
= 0,
$over
= 0){
if
(!
file_exists
(
$path
)){
$this
->halt(
"指定的目录[ "
.
$path
.
" ]不存在。"
);
}
if
(!
is_writable
(
$path
)){
$this
->halt(
"指定的目录[ "
.
$path
.
" ]不可写。"
);
}
$path
=
str_replace
(
"\\","
/
", $path);
$this->savepath = substr($path, -1) == "
/
" ? $path : $path."
/
";//保存路径
$this->overwrite = $over;//是否复盖相同名字文件
$this->maxsize = !$maxsize ? $this->maxsize : $maxsize;//文件最大字节
$this->format = $format;
}
/*
* 功能:检测并组织文件
* $form 文件域名称
* $filename 上传文件保存名称,为空或者上传多个文件时由系统自动生成名称
* $filename = 1,并上传多个同文件域名称文件时,则文件保存为原上传文件名称。
*/
function upload($form, $filename = "
"){
if(!isset($_FILES[$form])){
$this->halt("
指定的文件域名称不存在。
");
}else{
$filear = $_FILES[$form];
}
if(is_array($filear["
name
"])){//上传同文件域名称多个文件
$outfile = array();//返回文件名称数组
for($i = 0; $i < count($filear["
name
"]); $i++){
$ar["
name
"] = $filear["
name
"][$i];
$ar["
tmp_name
"] = $filear["
tmp_name
"][$i];
$ar["
size
"] = $filear["
size
"][$i];
$ar["
error
"] = $filear["
error
"][$i];
$this->getext($ar["
name
"]);//取得扩展名
$this->set_savename($filename == 1 ? $ar["
name
"] : "
");//设置保存文件名
$outfile[] = $this->copyfile($ar);
}
return $outfile;
}else{//上传单个文件
$this->getext($filear["
name
"]);//取得扩展名
$this->set_savename($filename);//设置保存文件名
return $this->copyfile($filear);
}
return false;
}
/*
* 功能:检测并复制上传文件
* $filear 上传文件资料数组
*/
function copyfile($filear){
if($filear["
size
"] > $this->maxsize){
$this->halt("
上传文件
".$filear["
name
"]."
大小超出系统限定值[
".$this->maxsize."
字节],不能上传。
");
}
if(!$this->overwrite && file_exists($this->savename)){
$this->halt($this->savename."
文件名已经存在。
");
}
if(!$this->chkext()){
$this->halt($this->ext."
文件格式不允许上传。
");
}
if(!copy($filear["
tmp_name
"], $this->savepath.$this->savename)){
$errors = array(0=>"
文件上传成功
",
1=>"
上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
",
2=>"
上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
",
3=>"
文件只有部分被上传。
",
4=>"
没有文件被上传。
");
$this->halt($errors[$filear["
error
"]]);
}else{
@unlink($filear["
tmp_name
"]);//删除临时文件
return $this->savename;//返回上传文件名
}
}
/*
* 功能: 取得文件扩展名
* $filename 为文件名称
*/
function getext($filename){
if($filename == "
") return;
$ext = explode("
.
", $filename);
$this->ext = $ext[count($ext)-1];
}
/*
* 功能:检测文件类型是否允许
*/
function chkext(){
if($this->format == "
" || in_array(strtolower($this->ext), explode("
,
", strtolower($this->format)))) return true;
else return false;
}
/*
* 功能: 设置文件保存名
* $savename 保存名,如果为空,则系统自动生成一个随机的文件名
*/
function set_savename($savename = "
"){
if ($savename == "
") { // 如果未设置文件名,则生成一个随机文件名
srand ((double) microtime() * 1000000);
$rnd = rand(100,999);
$name = date('U') + $rnd;
$name = $name."
.
".$this->ext;
} else {
$name = $savename;
}
$this->savename = $name;
}
/*
* 功能:错误提示
* $msg 为输出信息
*/
function halt($msg){
echo "
<strong>注意:</strong>
".$msg;
exit;
}
/*
*
*主要用来删除已上传的文件,不返回
*参数$file :文件路径
*/
function delete_file($file)
{
if (file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
if(file_exists($file))
{
$filesys = eregi_replace("
/
","
\\
",$file);
$delete = system("
del
$filesys
");
clearstatcache();
if(file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
$delete = system("
del
$filesys
");
}
}
clearstatcache();
}
}
}
?>
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/运维做开发/article/detail/756696
推荐阅读
article
分布式
事务
理论加实战
,
怒肝三个月啃完这110道
面试题
_
shardingsphere
面试题
...
答:5.7以前崩溃的那个RM会丢失
事务
,
导致别人都提交了
,
他被回滚了。5.7之后修复了
,
重连后还能继续提交。commit...
赞
踩
article
Python
入门:如何
在
MacOS
上
安装
Python
?_
macos
python
...
本文指导Mac用户
在
终端上
安装
Python
3,强调了从官方
安装
程序和Homebrew包管理器两种方法,以及Homebre...
赞
踩
article
远程
连接
spark
_
Spark
原理图解:Rpc通信...
几种网络模型的演进BIO,blocking IO,阻塞IO,服务器端接收到请求后,为该请求新建一个线程提供服务,当提供服...
赞
踩
article
【
架构
之路】
微
服务
中常用的几种
通信
方式
_多个
微
服务
如何
通信
...
HTTP REST适用于简单的请求响应模型和对外提供API的场景,易于实现和使用。gRPC适用于需要高性能
通信
和严格接口...
赞
踩
article
mybatis
-
plus
超
详细
笔记_
mybatis
plus
笔记...
目录前言 1. 入门项目 1.1 数据库 1.2 项目构建 2. 配置日志 3. CURD基本用法 3.1 插入...
赞
踩
article
ShardingSphere
系列二(
ShardingSphere
实现
分库
分表
)_shardingsp...
当业务系统逐渐增大时,单库单表不足以支撑起整个业务,性能会急速下降,这是就需要
分库
分表
;垂直拆分垂直
分库
垂直
分库
针对的是...
赞
踩
article
202
3
年全国
职业院校
技能大赛
(
高职组
)
“
云
计算
应用”赛项赛卷
3
(
公有
云
)
...
202
3
年全国
职业院校
技能大赛
(
高职组
)
“
云
计算
应用”赛项赛卷
3
(
公有
云
)
202
3
年全国
职业院校
技能大赛
(
高职组
)
“
云
计...
赞
踩
article
我
,
机械
工程硕士
,
工作
一年
,
月入6K...
一位 985 院校
机械
工程硕士
,
说他身边的人都在陆续转行。因为做
机械
的靠自己买房太难!神奇的是这些人转行还很成功:室友小...
赞
踩
article
二:
ShardingJDBC
核心
概念与快速
实战
_
sharding
jdbc
key
-generato...
目录一、ShardingSphere二、
ShardingJDBC
实战
1、
核心
概念:2、测试项目介绍3、快速
实战
4、Sha...
赞
踩
article
STM32F103
中的
systick
滴答时钟出错
_
undefined
symbol
systick
...
STM32F103
中的
systick
滴答时钟出现.\Obj\Template.axf: Error: L6218E: U...
赞
踩
article
NSSCTF
PWN
方向
刷题
记录_
pwnctf
刷题
...
流程:先添加note 0 再删除note 0 再添加note 1 并修改note1 内容为payload note1所在...
赞
踩
article
ShardingSphere5.0
自定义
分表
策略
_
sharding5
分表
策略
语法...
内容:com.example.user.sharding.UserIdSharding。需要根据SPI来注入。_shar...
赞
踩
article
JS
数组
删除
某一个
元素
...
JS
删除
数组
中某一个
元素
方式一: 在Array原型对象上添加
删除
方法 // 查找指定的
元素
在
数组
中的位置 Array....
赞
踩
article
AI
绘画
神级
Stable
Diffusion
入门教程|快速入门SD
绘画
原理与安装_
ai
绘画
sd入门...
什么是
Stable
Diffusion
,什么是炼丹师?根据市场研究机构预测,到2025年全球
AI
绘画
市场规模将达到100...
赞
踩
article
冒泡排序
算法
的C语言实现...
冒泡排序
算法
的C语言实现
冒泡排序
算法
的C语言实现
冒泡排序
(Bubble Sort)是一...
赞
踩
article
2023全国
职业技能
大赛
云
计算
--高职组赛题卷③(
私有
云
)_
云
计算
实操题
...
6.在controller节点和compute节点分别修改/usr/local/bin/openstack-instal...
赞
踩
article
如何
分配
内存
内存
碎片
处理技术_
如果
要设置下限以
减少
碎片
所造成的
分配
效率下降,应该
如何
修改
程序
?...
内存
碎片
是一个很棘手的问题。
如何
分配
内存
决定着
内存
碎片
是否会、何时会、
如何
会成为一个问题。 即使在系统中事实上仍然有许...
赞
踩
article
【Sa-
Token
|2】Sa-
Token
在
微
服务
中的使用_
sa
-
token
微
服务
...
负责用户认证和
Token
生成。: 负责用户信息管理。: 负责订单管理。_
sa
-
token
微
服务
sa
-
token
微
服务
...
赞
踩
article
【NLP】
word2vec
负
采样
...
word2vec
负
采样
介绍_
word2vec
负
采样
word2vec
负
采样
一、理解
负
采样
...
赞
踩
article
OpenCV
开发笔记(七十六):
相机
标定
(一):识别
棋盘
并绘制角点_
cv
。drawchessboar...
知道图像畸变矫映射的原理之后,那么如何得到
相机
的内参是矫正的第一步,内参决定了内参矩阵(中心点、焦距等),用内参矩阵才能...
赞
踩
相关标签
面试
java
后端
python
macos
开发语言
远程连接spark
架构
微服务
云原生
maven
spring
mysql
云计算
openstack
kubernetes
docker
ansible
k8s
编程语言
微软
项目管理
软件开发
sharding
STM32学习