php实现文件上传基本验证


Posted in PHP onMarch 04, 2020

本文实例为大家分享了php实现文件上传基本验证的具体代码,供大家参考,具体内容如下

Html部分

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>文件上传</title>
</head>
<body>
 <form action="doupload.php" method="post" enctype="multipart/form-data">
 <input type="file" name="myFile"/>
 <input type="hidden" name="MAX_FILE_SIZE" value="1024">
 <!-- <input type="hidden" name="MAX_FILE_SIZE" value="1024">通过建立隐藏域来控制文件上传的大小
 在页面上进行判断,value是1024kb,这是客户端上设置的限制,最好是服务器做限制 -->
 <input type="submit" value="上传"/>
 </form>
</body>
</html>

PHP服务端部分

<?php 
header("Content-type: text/html; charset=utf-8"); 
 //预定义变量
 //print_r($_FILES);//可以显示错误号,根据错误号来定位错误信息
 $filename=$_FILES['myFile']['name'];
 $type=$_FILES['myFile']['type'];
 $tmp_name=$_FILES['myFile']['tmp_name'];//存储地址
 $error=$_FILES['myFile']['error'];//错误类型
 $size=$_FILES['myFile']['size'];//文件大小
 $filenamemd5=getUniName($filename);
 // $types="jpg";//只能上传图片
 $limitsize="185000";//控制图片大小
 $a=getExt($filename);
 //$getext=getExt($filename);
 //得到文件的扩展名
 function getExt($filename){
 $first=explode(".",$filename); //文件名开始以.分割
 $ext=strtolower(end($first)); //取出数组中的最后一个数组进行返回
 return $ext;
 }
 //文件名以时间戳微秒md5加密的形式出现,确保文件的唯一
 function getUniName(){
 return md5(microtime(true));
 }
 //echo getUniName(); 返回md5加密的数值

 function gettypes($a){
  $array=array(jpg,png,txt);
 $b=in_array($a,$array);
 return $b;
 }

  if($limitsize>=$size){
  if(gettypes($a)){
  if($error==0){
   if (is_uploaded_file($tmp_name)) {
    //将服务器上的临时文件移动到指定目录
    $filename=$filenamemd5.".".getExt($filename);
    $destination="uploads/".$filename;
    if(move_uploaded_file($tmp_name, $destination)){
    //检测这个临时文件是否为post方式
    //返回镇或者假
    echo $filename."---"."文件上传成功";
   }else{
   echo "你不是post上传的,非法操作";
   }
  }else{
   echo "{$filename}文件移动失败";
  }
  }else{
   switch ($error) {
   case 1:
    echo "超过php配置文件upload_max_filesize的值";
    break;

   case 2:
    echo "超过表单max_file_size的值";
    break;
   case 3:
    echo "部分文件被上传";
    break;
   case 4:
    echo "没有文件被上传";
    break;
   case 6:
   case 7:
    echo "未知错误";
   }
  }
  }else{
  echo "只能上传图片";
  }
 }else{
  echo "超出上传文件大小限制";
 }

 ?>

本文已被整理到了《php文件上传操作汇总》 ,更多精彩内容,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php smarty模版引擎中的缓存应用
Dec 11 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php过滤XSS攻击的函数
Nov 12 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
PHP7 参数处理机制修改
Mar 09 PHP
PHP实现文件上传操作和封装
Mar 04 #PHP
PHP实现文件上传后台处理脚本
Mar 04 #PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 #PHP
php+ajax实现文件切割上传功能示例
Mar 03 #PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 #PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 #PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 #PHP
You might like
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
HTML5进度条特效
2014/12/18 HTML / CSS
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
安全生产责任书范本
2014/04/15 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
纪录片信仰观后感
2015/06/08 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android