近来正在回顾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

php文件上传相关知识点回顾的更多相关文章

  1. PHP文件上传相关

    1.必须通过POST提交 2. 声明 enctype="multipart/form-data"   $_FILES {[pic]=array ( [name]=>     ...

  2. WebService文件上传相关配置(404.13、超出限制、超时)

    最近在做文件上传的功能,遇到一些问题,记录如下,以备以后使用. 1.HTTP Error 404.13 - Not Found,请求筛选模块被配置为拒绝超过请求内容长度的请求. IIS默认允许请求长度 ...

  3. 文件上传相关报错: The current request is not a multipart request或is a MultipartResolver configured?

    1:from中涉及到图片上传的就要用post提交方式.否则就会报这个错误. 2:第一中:在jsp页面的<head></head>标签里面加上<meta http-equi ...

  4. 补习系列(11)-springboot 文件上传原理

    目录 一.文件上传原理 二.springboot 文件机制 临时文件 定制配置 三.示例代码 A. 单文件上传 B. 多文件上传 C. 文件上传异常 D. Bean 配置 四.文件下载 小结 一.文件 ...

  5. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  6. 深入springMVC源码------文件上传源码解析(下篇)

    在上篇<深入springMVC------文件上传源码解析(上篇) >中,介绍了springmvc文件上传相关.那么本篇呢,将进一步介绍springmvc 上传文件的效率问题. 相信大部分 ...

  7. PHP实现文件上传

    一.关于全局变量$_FILES $_FILES包含有所有上传的文件信息.假设文件上传字段的名称为 img.则 $_FILES['img']['name']:客户端上传的文件的原名称. $_FILES[ ...

  8. php文件上传参考配置与大文件上传

      PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off   ...

  9. php实现文件上传下载功能小结

    文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的.基本思路是通过form表单post方式实现 ...

随机推荐

  1. 【微信小程序】:小程序,新场景

    前言: 我们频繁进入的地方,是场景. 手机.是场景:浏览器.是场景.事实上,微信,也是场景-- 微信要做的是占领很多其它用户时间.占领很多其它应用场景.占领很多其它服务入口.这是商业本质想去垄断要做的 ...

  2. 彻底解决Android GPS没法定位这一顽固问题

    大家去网上搜索Android定位location为null没法定位问题.预计有一大堆文章介绍怎样来解决.可是最后大家发现基本没用. 本文将从Android定位实现原理来深入分析没法定位原因并提出真正的 ...

  3. iOS 在 ARC 环境下 dealloc 的使用、理解误区

    iOS 在 ARC 环境下 dealloc 的使用.理解误区 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...

  4. C++中sort()及qsort() (不完整介绍)

    在平时刷算法题和oj的时候,排序算法是最经常用到的算法之一:且在各类算法书的目录中 也通常是将各种排序算法放在最前面来讲,可见排序算法的重要性.可能许多人都在算法书中有学过冒泡.快速排序的方法,也都大 ...

  5. 面向对象的三大特性之二——继承(含super的使用)

    1.继承的语法:class 子类 extends 父类 例1: class Person { int age; String name; public void print1() { System.o ...

  6. 使用register_chrdev注册字符设备

    1.2.2  使用register_chrdev注册字符设备 注册字符设备可以使用register_chrdev函数. int register_chrdev (unsigned int major, ...

  7. 10.2 Hibernate持久层

    点击项目右键->MyEclipse->Add Hibernate Capabilities 打开MyEclipse Hibernate Perspective(MyEclipse Hibe ...

  8. 修改Myeclipse中项目在tomcat上发布的名称

    1.从网上找的,但是没有用 2.直接修改工作空间中的文件

  9. wolf

    package com.wh.Demo50; /** * @author 王恒 * @datetime 2017年4月7日 下午4:40:54 * @description * 分析:子类重写父类的方 ...

  10. hdu 2485 Destroying the bus stations 最小费用最大流

    题意: 最少需要几个点才能使得有向图中1->n的距离大于k. 分析: 删除某一点的以后,与它相连的所有边都不存在了,相当于点的容量为1.但是在网络流中我们只能直接限制边的容量.所以需要拆点来完成 ...