近来正在回顾PHP的文件上传。在此做个记录。


<?php
date_default_timezone_set('PRC');
if(isset($_POST['submit'])) {
echo "<pre>";
var_dump($_FILES['file']);
echo "</pre>"; //获取文件后缀名方法一:
//将文件名以“.”为界限分割为数组
//end函数对于数组,取数组中的最后一个元素
$ext = end(explode(".", $_FILES['file']['name'])); //获取文件后缀名方法二:
//找出文件名中的点所在位置,截取此位置后的字符串
//$extpos = strrpos($_FILES['file']['name'],'.');
//$ext = substr($_FILES['file']['name'], $extpos+1);
//echo "文件后缀名为 :" . $ext; //设置可上传的文件类型
$allowType = [
"gif", "jpeg", "jpg", "png"
];
//检测上传文件是否支持
if (!in_array($ext, $allowType)) {
die("请选择正确的文件格式上传");
} else {
//以年月日时分秒命名上传文件
$filename = date("YmdHis", time()) . ".".$ext;
//以年-月-日命名上传文件夹,保存同一日上传的文件
$directory = "uploads"."/".date("Y-m-d", time());
//检测目标文件目录是否存在
if (!is_dir($directory)) {
//不存在则创建文件夹
mkdir ($directory,0777,true);
//将临时文件保存到当天目录下
move_uploaded_file($_FILES['file']['tmp_name'], $directory . "/" . $filename);
} else {
//检测目标文件夹中是否已存在该文件
if (!file_exists()) {
//不存在则将临时文件保存到指定目录下
move_uploaded_file($_FILES['file']['tmp_name'], $directory . "/" . $filename);
}else{
die("该文件已经存在");
}
}
}
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传作业</title>
<style type="text/css">
table{border:0;cellspacing: 0;cellpadding:0}
table tr td{text-align: center;height: 25px;line-height: 25px;width: 200px; border: 1px solid darkolivegreen;}
</style>
</head>
<body>
<form action="homework.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>请选择文件</td>
<td><input type="file" name="file"></td>
<td><input type="submit" name="submit"></td>
</tr>
</table>
</form>
</body>
</html>

原文地址:https://segmentfault.com/a/1190000016359542

最新文章

  1. ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
  2. 利用varnish做Discuz论坛的缓存服务器
  3. 功能齐全的图表库 ACharts
  4. 【转载】CreateProcess的用法
  5. 16进制转rgb
  6. 李洪强漫谈iOS开发[C语言-035]-选择结构-与小结
  7. vue1.0和vue2.0的区别(一)
  8. HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二
  9. PAT1040:Longest Symmetric String
  10. Python全栈-day12-day13-函数4
  11. cxGrid用法-最新
  12. 设计模式 笔记 备忘录模式 Memento
  13. linux学习笔记-6.权限
  14. MVC 扩展RadioButtonListFor和CheckBoxListFor
  15. [.NET开发] C# BigInteger 处理超大整型数字
  16. 情感分析snownlp包部分核心代码理解
  17. Linux学习笔记:输入输出重定向 >>命令
  18. Http Digest认证协议
  19. java日志之log4j简单使用
  20. kali2.0下JAVA安装

热门文章

  1. [Linux]Apache配置虚拟主机
  2. 怎样安装g++/gdb
  3. 支付宝钱包手势password破解实战(root过的手机可直接绕过手势password)
  4. Empower Developers
  5. 出错Can't convert 'WebElement' object to str implicitly
  6. linux中字符串转换函数 simple_strtoul
  7. C#怎么清除字符串中HTML标签。。。
  8. 开发辅助 | 阿里图标库iconfont入门使用
  9. Android Fragment 初步解析
  10. 互联网汽车迎新成员 Alibaba YunOS Auto冠名2016世俱杯