搜索
查看
编辑修改
首页
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
DALL-E: Zero-Shot Text-to-Image Generation
2
服务器运维 考什么证书,腾讯云服务器运维高级工程师认证(TCP)证书有效期、考试内容、费用...
3
Pytest脚本的加载原理_pytest加载模块方式
4
华为云短信服务教你用C++实现Smgp协议
5
【数据结构】二叉树的遍历知识点_已知一棵二叉树的层次序列为abcdef,中序序列为badcfe,则先序序列为( )。
6
AI绘画入门教学:ComfyUI工作流安装教程
7
论述MySQL的同异步复制
8
android 性能分析工具(01)systrace_android systrace
9
Debian上安装Docker_debian安装docker
10
3D gaussian splatting(3DGS)运行过程记录_3dgs运行
当前位置:
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
GitHub
本地
上传
文件
_如何把
本地
文件
夹
上传
到
github
中...
默认创建一个 "master" 分支(蓝色括号),同时在
文件
夹中创建了.git的配置
文件
。如果报错了就可能是你没有配置邮...
赞
踩
article
JavaScript
中7种常见
删除
数组
中指定
元素
的
方法
(含代码)_
数组
删除
...
在
JavaScript
中,有多种
方法
可以从
数组
中
删除
指定的
元素
。文章介绍了7中常用的实现
方法
,并且包包含了完整的代码示例...
赞
踩
article
文件
上传
漏洞防御_
上传
文件
白名单
...
服务器端的检查最好使用
白名单
过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的c...
赞
踩
article
专访
NXROBO
林天麟
:香港学霸的
机器人
凭什么拿到iF
Design
Award
?...
2018年的第三天,深圳的阳光明媚,洒在身上温暖惬意。宜出行,访友。作者:aming编辑:芊芊图片:
NXROBO
官网:i...
赞
踩
article
python
调用
Gemini
大
模型
方法详解(
程序
及
示例
效果)_
python
大
模型
...
python
调用
Gemini
大
模型
方法详解(
程序
及
示例
效果)_
python
大
模型
python
大
模型
...
赞
踩
article
MySQL
学习——
触发器
的
语法和示例_
触发器
可以
使用
start
语句
吗...
触发器
定义为在
语句
插入、更新或删除关联表中
的
行时激活。这些行操作是触发事件。例如,
可以
通过INSERT或LOAD DAT...
赞
踩
article
最新
AI
提问
不再难
:
“
RBGR
魔法
公式
”让你秒变
提示
词高手(2)...
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!最新A...
赞
踩
article
面试
:
ShardingSphere
问题_
shardingsphere
面试
题...
ShardingSphere
是一套开源的分布式数据库中间件解决方案组成的生态圈,主要由 JDBC、Proxy 组成。这...
赞
踩
article
Shardingsphere
,
Mybatis
Plus之使用
自定义
精确
分片
算法
---PreciseS...
在前面进行了基本的
Shardingsphere
之后,在一些其他的复杂条件下,可以使用
自定义
精确
分片
算法
(PreciseS...
赞
踩
article
大
模型
OpenCompass
评测实战_
opencompass
数据
...
本文探讨了大
模型
评测的重要性和
OpenCompass
评测工具的使用,介绍了客观与主观评测方法,如何评估
模型
在多个维度的性...
赞
踩
article
【
ShardingSphere
专题】
SpringBoot
整合
ShardingSphere
(一、
数据
分...
最近线上的项目部分
数据
表增量速度比较快,可以预见的是,个把月后
数据
量会急剧增长至千万级,所以只是简单的使用索引等已经无法...
赞
踩
article
DATASTAGE
——
一
DATASTAGE
经验积累
_
datastage
语法...
一
、JOB的分类与作用(?) 1、Server JOB: 最为常用的Job类型,Job可以组合使用,Server ...
赞
踩
article
stm32
--
Systick
定时器
_
stm32
systick
定时器
函数是什么...
SysTick
定时器
目录一、
Systick
定时器
基础知识二、
Systick
相关寄存器库函数三、delay延时函数(Sys...
赞
踩
article
冬天OS(
二十三
)
:
宏
内核
改
微
内核
_
os
微
内核
改造...
--------------------------------------------------------IPC ...
赞
踩
article
Data
stage
java
transformer
stage
...
import
java
.io.BufferedReader;import
java
.io.InputStreamRead...
赞
踩
article
海
云安
荣登《嘶吼2023
中国
网络
安全
产业势能榜》 获评
金融
行业
专精型
安全
厂商...
此前,海
云安
已陆续入选了
中国
网络
安全
企业100强(第十一版)榜单、《2023年
中国
网络
安全
市场全景图》《CCSIP202...
赞
踩
article
开源
社区
的
由来(转载)
_
开源
社区
是
什么
意思...
开源
的
含义 “
开源
社区
”(Open Source Community)更准确
的
名称应该
是
“
开源
软件
社区
”(Open So...
赞
踩
article
GitHub
个人
分享
_如何
分享
github
...
提升访问
GitHub
的速度_如何
分享
github
如何
分享
github
简介:这个是我自己...
赞
踩
article
ChatGPT
写作提示词
指令
大全_
gpt
小红书
指令
...
介绍XX的背景和现状,分析XX问题的原因,提出相关政策建议,如XX等,并对政策的预期效果进行分析。账号主要发布XX相关的...
赞
踩
article
TDengine
发布主流时序
数据库
对比分析报告,与
InfluxDB
、
TimescaleDB
展开...
报告旨在验证
TDengine
基于时序数据场景所设计的独特架构带来的性能优势以及成本控制水平,其中所有测试均在标准化条...
赞
踩
相关标签
github
javascript
数组
删除元素
安全
网络
web安全
gemini
geminipro
vision
python
大模型
mysql
学习
数据库
人工智能
算法
面试
mybatis
深度学习
AIGC
llama
分布式
null