当前位置: 首页 > 编程日记 > 正文

PHP——图片上传

图片上传

Index.php文件代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><form action="upload2.php" method="post" enctype="multipart/form-data"><input type="file" name='file'><input type="submit" value="上传"></form>
</body>
</html>

upload.php代码:

图片上传步骤:

1:接收参数

         2:判断错误

         3:判断格式是否合法

         4:判断文件大小

         5:判断是是不是真正的图片

         6:判断是否是http post提交

<?php include('../function.php');//接受参数$file=$_FILES['file'];$name=$file['name'];$type=$file['type'];$tmp_name=$file['tmp_name'];$error=$file['error'];$size=$file['size'];$path='../images/';//判断错误if($error==UPLOAD_ERR_OK){// exit('上传成功');//判断格式是否合法$format=array('jpeg','jpg','png','gif');$ext=format($name);if(!in_array($ext,$format)){exit('图片格式不正确');}//判断文件大小$allowSize=1048576;            //1Mif($size>$allowSize){exit('图片过大');}//判断是不是图片$imgSize=getimagesize($tmp_name);if(!$imgSize){exit('这不是一个图片');}//判断是不是通过http post上传if(is_uploaded_file($tmp_name)){if(!file_exists($path)){mkdir($path,0777,true);chmod($path,0777);}$newName = getUniqidName().".".$Ext;$dstpath = $path.'/'.$newName;if(move_uploaded_file($tmp_name,$dstpath)){echo $newName;}else{exit('图片上传失败');}}else{exit('不是HTTP POST方式提交');}}else{switch ($error) {case '1':exit('文件大小超过限定值');break;case '2':exit('文件大小超过了表单配置大小');break;case '3':exit('文件只有部分被上传');break;case '4':exit('没有文件被上传');break;case '6':exit('没有找到缓存目录');break;case '7':exit('目录不可写');break;case '8':exit('PHP扩展程序阻止了文件上传');break;}}//取文件后缀函数function format($name){$ext=explode('.',$name);$val=end($ext);return $val;}function getUniqidName(){return md5(uniqid(microtime(true),true));}?>

文件上传

Index.php文件代码:

<!DOCTYPE html>

<html lang="en">

<head>

         <meta charset="UTF-8">

         <title>Document</title>

</head>

<body>

         <form action="upload2.php" method="post" enctype="multipart/form-data">

         <input type="file" name='file'>

         <input type="submit" value="上传">

         </form>

</body>

</html>

 

upload.php代码:

图片上传步骤:

1:接收参数

         2:判断错误

         3:判断格式是否合法

         4:判断文件大小

         5:判断是是不是真正的图片

         6:判断是否是http post提交

代码:

<?php

         include('../function.php');

 

         //接受参数

         $file=$_FILES['file'];

         $name=$file['name'];

         $type=$file['type'];

         $tmp_name=$file['tmp_name'];

         $error=$file['error'];

         $size=$file['size'];

         $path='../images/';

        

         //判断错误

         if($error==UPLOAD_ERR_OK){

                   // exit('上传成功');

                   //判断格式是否合法

                   $format=array('jpeg','jpg','png','gif');

                   $ext=format($name);

                   if(!in_array($ext,$format)){

                            exit('图片格式不正确');

                   }

                   //判断文件大小

                   $allowSize=1048576;                          //1M

                   if($size>$allowSize){

                            exit('图片过大');

                   }

                   //判断是不是图片

                   $imgSize=getimagesize($tmp_name);

                   if(!$imgSize){

                            exit('这不是一个图片');

                   }

                   //判断是不是通过http post上传

                     if(is_uploaded_file($tmp_name)){

       if(!file_exists($path)){

          mkdir($path,0777,true);

          chmod($path,0777);

       }

       $newName = getUniqidName().".".$Ext;

       $dstpath = $path.'/'.$newName;

        if(move_uploaded_file($tmp_name,$dstpath)){

          echo $newName;

        }else{

            exit('图片上传失败');

        }

   }else{

      exit('不是HTTP POST方式提交');

   }

         }else{

                   switch ($error) {

                            case '1':

                                     exit('文件大小超过限定值');

                                     break;

                           

                            case '2':

                                     exit('文件大小超过了表单配置大小');

                                     break;

                            case '3':

                                     exit('文件只有部分被上传');

                                     break;

                            case '4':

                                     exit('没有文件被上传');

                                     break;

                            case '6':

                                     exit('没有找到缓存目录');

                                     break;

                            case '7':

                                     exit('目录不可写');

                                     break;

                            case '8':

                                     exit('PHP扩展程序阻止了文件上传');

                                     break;

                   }

         }

 

         //取文件后缀函数

         function format($name){

                   $ext=explode('.',$name);

                   $val=end($ext);

                   return $val;

         }

         function getUniqidName(){

               return md5(uniqid(microtime(true),true));

         }

 

 ?>

转载于:https://www.cnblogs.com/piziyu/p/5428828.html

相关文章:

IDEA实用插件和技巧

《解决lambda expressions are not supported at this language level的问题》 《Intellij Idea 代码格式化/保存时自动格式化》 一、安装google-java-format preferences -> plugins -> Browse repositories… 搜索google-java-format 还有阿里的代码规范插件也不…

c语言将字母与数字分开存放,2017年计算机二级《C语言》考前提分试题及答案9...

二、程序填空题(共18分)、下列给定程序中&#xff0c;函数flm的功能是&#xff1a;将s所指字符串中的所有数字字符移到所有非数字字符之后&#xff0c;并保持数字字符串和非数字字符串原有的次序。例如&#xff0c;s所指的字符串为“def35adh3kjsdt7”&#xff0c;执行后结果为…

学术青年如何克服拖延症——5条技巧助你前进

雷锋网 AI 科技评论按&#xff1a;「我准备好了就开始」&#xff08;或者说「拖延症」&#xff09;&#xff0c;以及「即便动起手来也觉得举步维艰」大概是每个现代人都逃不过的日常感受&#xff0c;不管是学习、在企业中工作&#xff0c;还是从事学术研究。我们可能都看过许多…

JDK源码研究Jstack,JMap,threaddump,dumpheap的原理

JDK最新bug和任务领取&#xff1a;https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区&#xff1a;https://bugs.openjdk.java.net/projects/JDK/issues openjdk源码地址&#xff1a; https://jdk.java.net/java-se-ri/8 https://download.java.net/openj…

C语言中regex_error,为什么这个C 11 std :: regex示例抛出一个regex_error异常?

参见英文答案 >Is gcc 4.8 or earlier buggy about regular expressions? 2尝试学习如何在C 11中使用新的std :: regex.但是我尝试的例子是抛出一个我不明白的regex_error异常.这是我的示例代码&#xff1a;#include #include int main…

如何删除mac通用二进制文件

通用二进制文件是什么&#xff1f; 计算机文件基本上分为二种&#xff1a;二进制文件和 ASCII&#xff08;也称纯文本文件&#xff09;&#xff0c;图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序…

约瑟夫环 猴子选大王

<? /*** 猴子选大王&#xff1a;一群猴子排成一圈&#xff0c;按1,2,…,n依次编号。* 然后从第1只开始数&#xff0c;数到第m只,把它踢出圈&#xff0c;从它后面再开始数&#xff0c;再数到第m只&#xff0c;在把它踢出去…&#xff0c;* 如此不停的进行下去&#xff0c;直…

Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现

关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》 查看汇编语言汇编码 说要看汇编还是很有必要的&#xff0c;因为有些地方比如加锁其实还是通过汇编实现的&#xff0c;只看字节码不能看出底层实现。 其实就是利用使用hsdis与jitwat…

云计算读书笔记(五)

Hadoop&#xff1a;Google云计算的开源实现 Hadoop是Apache开源组织的一个分布式计算机框架&#xff0c;可以在大量廉价的硬件设备组成的集群上运行应用程序&#xff0c;为应用程序提供一组稳定可靠的接口&#xff0c;旨在构建一个具有高可靠性和良好扩展性的分布式系统。 Hado…

自动跟随小车c语言,基于OpenCV的智能小车运动轨迹跟踪方法研究

摘要&#xff1a;随着人工智能技术的快速发展,智能小车开发受到越来越多研究者的关注,也已经成为一个重要的研究方向,而解决智能小车在路径规划中行驶的运动故障重要手段是对其进行的视频监控,但是智能小车的视频监控只能看到智能小车的行进状况而不进行相对应的处理,所以对智能…

JXJJOI2018_T1_market

题目描述 某天Lemon去超市买柠檬&#xff0c;他发现货架上有N个柠檬&#xff0c;每个柠檬都有一个重量Wi和价格Ci。 Lemon身上只带了S元钱&#xff0c;因此他想要买一个价格不超过S的柠檬回家&#xff0c;另外&#xff0c;他希望他买的那个柠檬的性价比尽量高。 性价比的定义是…

更好的Java虚拟机Zing: 更好的性能,无停顿,更快的启动

Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集) 首先说明这个Zing是收费的&#xff0c;但是他也是优秀的&#xff0c;我觉得我们可以研究下他的一些思想对于怎么提高JVM&#xff0c;以及目前的JVM有什么缺陷是非常有帮助的。 中文版简介&#xff1a;…

c语言将水仙花数放入一维数组a中,全国计算机等级考试C语言考试程序设计题(13)...

在考生目录下&#xff0c;要求程序PROG.C的功能是&#xff1a;将所有的水仙花数保存到一维数组a中。(所谓水仙花数是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;1531*1*15*5*53*3*3)#includevoid main(){void NONO( );//函数声明int a[10]{0},i…

[j2me]类似于OperaMini二级菜单界面演练[1]

拜朋友所赐&#xff0c;今日开始尝试如何绘制类似于Opera Mini的二级菜单&#xff0c;如下图所示&#xff1a;我自己的练习&#xff0c;还很幼稚&#xff0c;姑且记录如下&#xff1a;点击左软键&#xff0c;即可选中界面左下角的“选择”命令&#xff0c;二级菜单旋即弹出&…

宜人贷YEP技术、数据沉淀背后:金融科技迎来开放赋能时代

日前&#xff0c;“IFPI第十届金融科技决策者大会2018”在上海举办&#xff0c;宜人贷不仅入选了本届大会的“中国Fintech独角兽榜Top50”&#xff0c;推出的YEP共享平台也受到了众多金融机构的关注。从头部平台宜人贷全面开放金融科技能力来看&#xff0c;互联网金融行业历经混…

Redis源码和java jdk源码中hashcode的不同实现

一.redis实际上是使用了siphash 这个比较简单&#xff0c;我说的简单是指redis代码比较少不像jdk一样调用C代码调用栈非常深。 先看这个rehashing.c 主要就是dictKeyHash函数&#xff0c;需要调用dict.h头文件中定义的dictGenHashFunction #include "redis.h" #i…

android 7.0 短信监控,Android 7.0 监听网络变化的示例代码

Android7.0前&#xff0c;Android系统前网络切换时&#xff0c;会发广播&#xff0c;业务只要监听广播即可。public class NetChangeReceiver extends BroadcastReceiver {private static final String ANDROID_NET_CHANGE_ACTION "android.net.conn.CONNECTIVITY_CHANGE…

Mysql列类型-数值型

2019独角兽企业重金招聘Python工程师标准>>> 一、整数型&#xff1a; 1、取值范围&#xff1a; tinyint smallint mediumint int bigint 分别占用1、2、3、4、8个字节的存储空间 如&#xff1a;tinyint占用1个字节空间&#xff0c;它的取值范围&…

2018.10.22-dtoi1443奶牛逃亡(cowrun)

题目描述&#xff1a; Farmer John忘记修复他农场篱笆上的一个大洞&#xff0c;以至于篱笆围着的N&#xff08;1< N <1,000&#xff09;只奶牛从大洞中逃脱出来&#xff0c;并在农场里横冲直撞。每头在篱笆外的奶牛每分钟都将给他带来一美元的损失。FJ必须遍及每头奶牛、…

[转载]Linux 线程实现机制分析

自从多线程编程的概念出现在 Linux 中以来&#xff0c;Linux 多线应用的发展总是与两个问题脱不开干系&#xff1a;兼容性、效率。本文从线程模型入手&#xff0c;通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足&#xff0c;描述了 Linux 社区是如何看待…

Java12和Jdk12安装以及OpenJdk12源码

文档&#xff1a; JDK 12文档:https://docs.oracle.com/en/java/javase/12/ 下载&#xff1a; OracleJDK12下载&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html csdn上我下好的&#xff0c;速度较快&#xff1a;https…

android 获取视频大小,Android 获取视频缩略图(获取视频每帧数据)的优化方案

速度对比左边的图片是通过方式1右边的图片是通过方式2speed.gif速度优化&#xff0c;效果拔群。在缩小2倍的Bitmap输出情况下使用MediaMetadataRetriever 抽帧的速度&#xff0c;每帧稳定在 300ms左右。使用MediaCodecImageReader 第一次抽帧。大概是200ms ,后续每帧则是50ms左…

Msql的DML、DDL、DCL的区别

DML(data manipulation language)&#xff1a;它们是SELECT、UPDATE、INSERT、DELETE&#xff0c;这4条命令是用来对数据库里的数据进行操作的语言 DDL(data definition language)&#xff1a;主要的命令有CREATE、ALTER、DROP等&#xff0c;DDL主要是用在定义或改变表(TABLE)的…

JSR 133 Java内存模型以及并发编程的最权威论文汇总

Java内存模型 先看官方文档&#xff1a; https://docs.oracle.com/javase/specs/ JSR 133&#xff1a;Java TM内存模型和线程规范修订版&#xff1a;https://www.jcp.org/en/jsr/detail?id133 JSR&#xff1a;Java规范请求所有JSR的列表&#xff1a;https://jcp.org/en/jsr/…

ajax实现自动刷新页面实例

html部分&#xff1a;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>ajax实现自动刷新</title> </head> <body onLoad"Autofresh()"> <p>现在的时间是&#xff1a…

android aliasactivity作用,android activity-alias 的作用

activity-alias是android里为了重复使用Activity而设计的。当在Activity的onCreate()方法里&#xff0c;执行getIntent().getComponent().getClassName();得到的可能不是这个Activity的名字&#xff0c;有可能是别名的名字&#xff0c;例如&#xff1a;在AndroidMenifest.xml有…

1024 程序员节 | 请对身边的程序猿好一点

程序员节起源程序员的工作我们都知道&#xff0c;编程嘛。但为什么程序员节要在1024呢&#xff1f;1024最早火起来是因为一个“不可描述”的论坛&#xff0c;那里的回帖机制是&#xff1a;新用户发过贴之后&#xff0c;过1024秒才能发一贴&#xff0c;如果没到1024秒就又发了一…

stackoverflow上一个最会举例子的专家

https://stackoverflow.com/ Premraj是stackoverflow上一个一个最会举例子的专家&#xff0c;我特意收集了他的一些有趣的举例&#xff1a; Java弱引用最精彩的解释 https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakrefere…

Java中的两个关键字——super、this

Java中的两个关键字——super、this 神话丿小王子的博客主页 一、super super 是java中方的一个关键字&#xff0c;用它可以引用父类中的成员&#xff1a; super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器 使…

android system window,Android控件的fitSystemWindows属性

官方描述&#xff1a;根据系统窗体里的元素比如状态栏来调整View的布局。如果被设为true&#xff0c;控件的padding将会被调整为顶部留出一个statusBar的空间。类似于伪代码paddingTop"statusBarHeight"。重点说明&#xff1a;当布局内容可以延伸到状态栏&#xff0c…