程序测试网址: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. 【网络流24题】 No.14 孤岛营救问题 (分层图最短路)

    [题意] 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛, 营救被敌军俘虏的大兵瑞恩. 瑞恩被关押在一个迷宫里, 迷宫地形复杂, 但幸好麦克得到了迷宫的地形图. 迷宫的外形是 ...

  2. AFNetworking网络请求的get和post步骤

      1.首先通过第三方:CocoaPods下载AFNetworking 1.1.先找到要查找的三方库:pod search + AFNetworking 1.2.出来一堆列表页面,选择三方库最新版本命 ...

  3. 四种必须知道的Android屏幕自适应解决方案

    一.细说layout_weight     目前最为推荐的Android多屏幕自适应解决方案.     该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中.其值越小,则对应的layout ...

  4. Android 获取图片资源的4种方式

    1. 图片放在sdcard中 Bitmap imageBitmap = BitmapFactory.decodeFile(path) (path 是图片的路径,跟目录是/sdcard) 2. 图片在项 ...

  5. XtraForm中更换皮肤

    前提: 默认皮肤的显示http://www.cnblogs.com/chucklu/p/4785572.html 1.修改XtraForm的LookAndFeel的SkinName属性,设置为Cara ...

  6. 一台机器上运行多个ActiveMq

    由于业务需要一台机器上运行多个ActiveMq,这里主要说一下有什么地方不重复: 1.brokerName名称不能重复 2.端口号不能重复uri = tcp://localhost:50509 3.k ...

  7. WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞

    漏洞名称: WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞 CNNVD编号: CNNVD-201309-388 发布时间: 2013-09-24 更新 ...

  8. ☀【单位】REM

    CSS3的REM设置字体大小 支持的浏览器还是蛮多的,比如:Mozilla Firefox 3.6+.Apple Safari 5+.Google Chrome.IE9+和Opera11+.只是可怜的 ...

  9. JAVA 数组常用技巧

    1.  在Java中输出一个数组(Print an array in Java) int[] intArray = { 1, 2, 3, 4, 5 }; String intArrayString = ...

  10. ETL构建数据仓库五步法

    原文:http://huangy82.blog.163.com/blog/static/49069827200923034638409/ ETL构建企业级数据仓库五步法 在数据仓库构建中,ETL贯穿于 ...