//执行完整的文件上传
$path = "./uploads"; //文件上传的指定目录
$upfile = $_FILES['pic']; //文件的上传信息【一维数组】
$typeList = array('image/jpeg','image/png','image/gif'); //允许用户上传的文件类型列表
$maxSize = 0; //设置上传文件大小的范围,如果为0表示不限制大小 //格式化路径信息
$path = rtrim($path,"/")."/"; //1.判断错误号
if($upfile['error']>0){
switch($upfile['error']){
case 1:
$info = "表示上传文件的大小超出了约定值";
break;
case 2:
$info = "表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值";
break;
case 3:
$info = "表示文件只被部分上传";
break;
case 4:
$info = "表示没有上传任何文件";
break;
case 6:
$info = "表示找不到临时文件夹";
break;
case 7:
$info = "表示文件写入失败";
break;
}
die("上传失败!原因:{$info}");
} //2.判断上传文件类型
if($typeList && count($typeList)>0){
if(!in_array($upfile['type'],$typeList)){
die('上传失败!原因:系统不允许的上传文件类型!');
}
}else{
die('上传失败!原因:系统没有定义允许上传的文件列表!');
} //3.判断上传文件大小
if($maxSize>0 && $upfile['size']>$maxSize){
die('上传失败!原因:上传文件大小超出了系统允许的范围!');
} //4.生成一个新的文件名,避免重名
$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION); //获取后缀名
do{
$newName = date('YmdHis').rand(100000000,999999999).".".$ext;
}while(file_exists($path.$newName)); //5.执行文件的移动
if(is_uploaded_file($upfile['tmp_name'])){
if(move_uploaded_file($upfile['tmp_name'],$path.$newName)){
echo "恭喜,上传成功!文件名:".$path.$newName;
}else{
die('上传失败!原因:移动上传文件失败!');
}
}else{
die('上传失败!原因:不是一个有效的上传文件!');
}

【php】面向过程的文件上传过程的更多相关文章

  1. SugarCRM安装过程——PHP文件上传限制问题

    找到D:\xampp\php目录下,php文件中的php.ini文件,用写字板打开: 1.查找post_max_size,指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M, ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(32)-swfupload多文件上传[附源码]

    系列目录 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项目上文件上传是比不可少的,大家 ...

  3. [转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

    原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的. ...

  4. Webwork 学习之路【07】文件上传下载

    Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺 ...

  5. Web Uploader文件上传插件

    http://www.jq22.com/jquery-info2665   插件描述:WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现 ...

  6. Web Uploader文件上传&&使用webupload有感(黄色部分)

    引入资源 使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF. <!--引入CSS--> <link rel="stylesheet" ...

  7. Plupload文件上传组件使用API

    Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...

  8. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

随机推荐

  1. Python专题——五分钟带你了解map、reduce和filter

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第6篇文章,给大家介绍的是Python当中三个非常神奇的方法:map.reduce和filter. 不知道大家看到ma ...

  2. C++ 指针实现字符串倒序排列

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <coni ...

  3. js 行走的小女孩 面向对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Java多线程详解(转载)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用 ...

  5. win10环境下如何修改Python pip的更新源?

    1.在window的文件夹窗口输入 : %APPDATA%2.在弹出的路径中新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件,然后再里面输入内容 [global] timeout = ...

  6. CSS每日学习笔记(2)

    7.31.2019 1.CSS定位:允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置. CSS 有三种基本的定位机制:普通流.浮动和绝对定位.除非专 ...

  7. payload分离免杀

    shellcode loader 借助第三方加载器,将shellcode加载到内存中来执行. https://github.com/clinicallyinane/shellcode_launcher ...

  8. 微信小程序api封装

    写多 之后,吸取之前的经验,瞎写了一个简单的封装api,有幸看到的朋友,就随便看看哈,如果能给到你帮助就一直棒了,额呵呵呵! 新建constant.js和api.js文件 在constant.js中统 ...

  9. 报错:Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'gender' at row 1

    我遇到这个错误是解决办法:我修改了对应的数据库字段的长度:原本我设置的是char型,但是存进去的是一个string型,结果就报了这个报了这个错误 下面就是数据库修改之后的结果. 以上都是我学习过程中遇 ...

  10. 刷oj之类的题时java Scanner读取太慢解决之道

    1.转载自一个 https://www.cpe.ku.ac.th/~jim/java-io.html 2.工具代码 class Reader { static BufferedReader reade ...