PHP图片文件上传类型限制扩展名限制大小限制与自动检测目录创建。
程序测试网址: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图片文件上传类型限制扩展名限制大小限制与自动检测目录创建。的更多相关文章
- Codeigniter文件上传类型不匹配错误
Codeigniter的文件上传类方便了我们使用PHP来处理文件上传的操作,使用起来非常简单,如下: $config['upload_path'] = './uploads/'; $config[ ...
- SpringMvc MultipartFile 图片文件上传
spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...
- .Net Core 图片文件上传下载
当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...
- SSH—网上商城之商品图片文件上传
前言 网上商城中的淘宝图片要显示在页面的前提是图片应该已经在数据库里面,那么怎么实现图片的上传功能呢,这就是今天要说的主题. 内容 需求: 商城后台需要添加图片文件,用来图片显示 解决方式: Stru ...
- springmvc图片文件上传接口
springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...
- input file实现多选,限制文件上传类型,图片上传前预览功能
限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...
- SpringMvc commons-fileupload图片/文件上传
简介 SpringMvc文件上传的实现,是由commons-fileupload这个jar包实现的. 需求 在修改商品页面,添加上传商品图片功能. Maven依赖包 pom.xml <!-- 文 ...
- PHP代码篇(五)--如何将图片文件上传到另外一台服务上
说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...
- PHP 图片文件上传代码
通过 PHP,可以把文件上传到服务器.里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的 ...
随机推荐
- 【SPOJ 2319】 BIGSEQ - Sequence (数位DP+高精度)
BIGSEQ - Sequence You are given the sequence of all K-digit binary numbers: 0, 1,..., 2K-1. You need ...
- C++内存管理(超长,例子很详细,排版很好)
[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...
- 例说C#深拷贝与浅拷贝
一开始,先对C#深拷贝与浅拷贝知识做个简单的总结. 无论是浅拷贝与深拷贝,C#都将源对象中的所有字段复制到新的对象中.不过,对于值类型字段,引用类型字段以及字符串类型字段的处理,两种拷贝方式存在一定的 ...
- linux ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignored.
[root@ora9i 3238244]# lsb_release -a LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:g ...
- c语言中%p指针
%p与指针对应,是输出指针的地址 如: char * p="abc"; ...... printf("The address %p is %s", p, p); ...
- [LeetCode#277] Find the Celebrity
Problem: Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there ma ...
- statspack系列8
原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-8/ 作者:Jonathan Lewis 在前面的关于stat ...
- WordPress MORE+主题‘prettyPhoto’跨站脚本漏洞
漏洞名称: WordPress MORE+主题‘prettyPhoto’跨站脚本漏洞 CNNVD编号: CNNVD-201310-284 发布时间: 2013-10-23 更新时间: 2013-10- ...
- linux .o,.a,.so文件解析
linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多.a为静态库 ...
- .Net 调式案例—实验4 高CPU(High CPU)回顾
原文地址:http://blog.csdn.net/directionofear/article/details/8033506 如果Web应用程序经常遇到的问题按频率排名的话,我觉得 第一名unha ...