程序测试网址:http://blog.z88j.com/fileuploadexample/index.html

代码分为两部分:

一部分form表单:

 <!doctype html>
<html>
<head>
<title>文件上传案例-file upload example</title>
<meta http-equiv="content-type" contnet="text/html" charset="utf-8"/>
</head>
<body>
<h1>文件上传支持图片.gif.png.jpg.jpeg限制200kb大小的文件</h1>
<form method="POST" action="upload_file.php" enctype="multipart/form-data">
<lable for="file">File:</lable>
<input name="file" type="file" id="file"/><br/>
<input type="submit" value="上传文件"/>
</form>
</body>
</html>

二部分PHP后台上传验证程序:

 <meta charset="utf-8"/>
<?php
$array=array("gif","png","jpg","jpeg");//赋值一个数组
$tmp=explode(".",$_FILES['file']['name']);//用explode()函数把字符串打散成为数组。
$extension=end($tmp);//用end获取数组最后一个元素
if($_FILES['file']['error']>0){//判断提交上的文件是否为空或错误
echo "文件未选择,或非法文件!错误:".$_FILES['file']['error'];
}else{
if((($_FILES['file']['type']=="image/gif")//判断提交上的文件的文件类型是否正确和文件扩展名是否正确,文件大小是否超2048kb。
||($_FILES['file']['type']=="image/png")
||($_FILES['file']['type']=="image/jpeg")
||($_FILES['file']['type']=="image/jpg")
||($_FILES['file']['type']=="image/pjpeg")
||($_FILES['file']['type']=="image/x-png"))
&&($_FILES['file']['size']<204800)
&&in_array($extension,$array)){
echo "文件大小和文件扩展名验成功!<br/>";
if(file_exists("upload/")){//用file_exists函数检测是否有upload目录,用if判断。
if(file_exists("upload/".$_FILES['file']['name'])){//用file_exists函数检测是否在upload目录下有['name']文件。用if判断。
echo "已存在该文件名!位置:upload/".$_FILES['file']['name'];
}else{//显示各个信息,然后用move_upload_file函数把临时目录文件移动到upload目录。
echo "上传完成,下面是信息:<br/>";
echo "上传文件名:".$_FILES['file']['name']."<br/>";
echo "上传类型:".$_FILES['file']['type']."<br/>";
echo "上传文件大小:".$_FILES['file']['size']."<br/>";
echo "上传文件临时缓存位置:".$_FILES['file']['tmp_name']."<br/>";
move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']);//这里我们用到两个参数,一是被移到的文件,二是移动到的目标位置。
echo "储存服务器相对的位置为:/upload/".$_FILES['file']['name'];
}
}else{//没有目录的情况下,使用mkdir函数创建upload目录。
echo "不存在upload目录,已自动创建upload/目录";
mkdir("upload");
}
}else{
echo "扩展名和文件大小不正确,扩展名支持gif,jpg,png,jpeg,文件大小支持200kb";
}
//echo "文件临时储存的位置:".$_FILES['file']['tmp_name'];//把文件获取到临时储存的位置里面,并打印出来;
//move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']);//把临时储存的文件移到upload目录下。
}
?>

后台PHP程序经过四次if判断进行四次判断上传的文件:

第一次if判断上传的文件是否空提交或者是否有错误。

第二次if判断上传的文件类型是否正确,扩展名是否匹配,大小是否合理。

第三次if判断上传的文件,所属的目录是否存在,假设不存在,系统会自动用mkdir函数创建一个upload目录;

第四次if判断上传的文件是否已存在,假设存在会进行提示并停止上传。相反如果不存在会进行上传操作;

PHP图片文件上传类型限制扩展名限制大小限制与自动检测目录创建。的更多相关文章

  1. Codeigniter文件上传类型不匹配错误

    Codeigniter的文件上传类方便了我们使用PHP来处理文件上传的操作,使用起来非常简单,如下:   $config['upload_path'] = './uploads/'; $config[ ...

  2. SpringMvc MultipartFile 图片文件上传

    spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...

  3. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  4. SSH—网上商城之商品图片文件上传

    前言 网上商城中的淘宝图片要显示在页面的前提是图片应该已经在数据库里面,那么怎么实现图片的上传功能呢,这就是今天要说的主题. 内容 需求: 商城后台需要添加图片文件,用来图片显示 解决方式: Stru ...

  5. springmvc图片文件上传接口

    springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...

  6. input file实现多选,限制文件上传类型,图片上传前预览功能

    限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...

  7. SpringMvc commons-fileupload图片/文件上传

    简介 SpringMvc文件上传的实现,是由commons-fileupload这个jar包实现的. 需求 在修改商品页面,添加上传商品图片功能. Maven依赖包 pom.xml <!-- 文 ...

  8. PHP代码篇(五)--如何将图片文件上传到另外一台服务上

    说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...

  9. PHP 图片文件上传代码

    通过 PHP,可以把文件上传到服务器.里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的 ...

随机推荐

  1. 【BZOJ 3476】 线段树===

    59  懒惰的奶牛贝西所在的牧场,散落着 N 堆牧草,其中第 i 堆牧草在 ( Xi,Yi ) 的位置,数量有 Ai 个单位.贝西从家移动到某一堆牧草的时候,只能沿坐标轴朝正北.正东.正西.正南这四个 ...

  2. WeakHashMap理解

    WeakHashMap实现了Map接口,是HashMap的一种实现,他使用弱引用作为内部数据的存储方案,WeakHashMap可以作为简单缓存表的解决方案,当系统内存不够的时候,垃圾收集器会自动的清除 ...

  3. Java序列化与Hessian序列化的区别

    Java序列化: Java序列化会把要序列化的对象类的元数据和业务数据全部序列化为字节流,而且是把整个继承关系上的东西全部序列化了.它序列化出来的字节流是对那个对象结构到内容的完全描述,包含所有的信息 ...

  4. Https 原理

    HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据 1. ...

  5. bzoj1487

    还是仙人掌,和1023一样的考虑方法比1023简单但比1040难环形dp的处理方法和1040一样 type node=record po,next:longint; end; ..,..] of lo ...

  6. POJ_3068_Shortest_pair_of_paths_(最小费用流)

    描述 http://poj.org/problem?id=3068 危险品:N个仓库由M条有向边连接,每条边都有一定费用.将两种危险品从0运到N-1,除了起点和终点外,危险品不能放在一起,也不能走相同 ...

  7. ADO.NET 增删查改小总结

    转自:http://www.cnblogs.com/ashu123/archive/2010/10/10/ado_1.html 三套路-----增删改 1 using System.Data.SqlC ...

  8. jQuery开始之旅

    (1)首先到http://jquery.com/download/网站进行现在jQuery库. (2)这里演示一下,使用CDN进行jQuery编程的例子: 选择的是jQuery的CDN,<scr ...

  9. (转载)javascript经典例子

    (转载)http://www.blogjava.net/hadeslee/archive/2007/11/24/161778.html 一.验证类1.数字验证内1.1 整数1.2 大于0的整数 (用于 ...

  10. (转载)JS事件监听 JS:attachEvent和addEventListener使用方法

    (转载)http://www.chhua.com/web-note146 attachEvent和addEventListener使用方法 Js代码 <html> <head> ...