php文件上传实例(带文件类型限制)

今天改进了下旗下几个网站的文件上传系统,顺便发点东西。

全php代码,无js,文件类型根据后缀名判断,非mime判断。

新建个up.php,代码如下:

 代码如下 复制代码
<?php
$uptype=array("jar","zip");
//允许上传文件类型
$max_file_size=20480000;   //上传文件大小限制, 单位BYTE
$path_parts=pathinfo($_SERVER['PHP_SELF']); //取得当前路径
$destination_folder="files/";
//上传文件路径
$name="MuXi_".date("Y-m-d_H-i-s");
//保存文件名
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
 $file = $_FILES["upload_file"];
 if(!is_uploaded_file($file["tmp_name"]))
//是否存在文件
{
echo "文件不存在!";
exit;
}
$torrent = explode(".", $file["name"]);
$fileend = end($torrent);
$fileend = strtolower($fileend);
if(!in_array($fileend, $uptype))
//检查上传文件类型
{
echo"不允许上传此类型文件!";
exit;
}
 if($max_file_size < $file["size"])
 //检查文件大小
{
echo "文件太大,超过上传限制!";
exit;
}
 if(!file_exists($destination_folder))
mkdir($destination_folder);
$filename=$file["tmp_name"];
$image_size = getimagesize($filename);
$pinfo=pathinfo($file["name"]);
$ftype=$pinfo[extension];
$destination = $destination_folder.$name.".".$ftype;
 if(file_exists($destination) && $overwrite != true)
{
echo "同名文件已经存在了!";
exit;
}
 if(!move_uploaded_file ($filename, $destination))
{
echo "移动文件出错!";
exit;
}
$pinfo=pathinfo($destination);
$fname=$pinfo[basename];
echo "上传成功!";
}
?>

调用代码:

 代码如下 复制代码

<form action="up.php" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
<input type="submit" value="上传" />

用mime类型限制有局限性,有些文件在上传是不是正常本身的mime,导致上传不成功,而用后缀名限制可以很好的解决这个问题。

时间: 2024-10-30 16:23:46

php文件上传实例(带文件类型限制)的相关文章

asp.net 文件上传实例汇总

 文件上传在asp.net中有很多方法,这里我很给各位介绍最简单最方便的.net文件上传实例,希望给各位.net入门者带来帮助 ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法.   方法一:用Web控件FileUpload,上传到网站根目录.   Test.aspx关键代码:    代码如下:      <form id="form1" runat="server">      <

PHP文件上传之多文件上传的实现思路_php实例

多文件上传的两种情况 ①使用多个name值 <input type="file" name="file1"> <input type="file" name="file2"> <input type="file" name="file3"> <input type="file" name="file4"&g

ThinkPHP文件上传实例教程_php实例

文件上传是很多PHP程序项目中常见的一个功能,今天本文就来分享一个完整的实例,来实现ThinkPHP文件上传的功能.具体方法如下: 一.action部分: FileAction.class.php页面代码如下: <?php class FileAction extends Action{ function index(){ $file=M('file'); $list=$file->select(); $this->assign('filelist',$list); $this->

Spring学习笔记2之表单数据验证、文件上传实例代码_java

在上篇文章给大家介绍了Spring学习笔记1之IOC详解尽量使用注解以及java代码,接下来本文重点给大家介绍Spring学习笔记2之表单数据验证.文件上传实例代码,具体内容,请参考本文吧! 一.表单数据验证 用户注册时,需要填写账号.密码.邮箱以及手机号,均为必填项,并且需要符合一定的格式.比如账号需要32位以内,邮箱必须符合邮箱格式,手机号必须为11位号码等.可以采用在注册时验证信息,或者专门写一个工具类用来验证:来看下在SpringMVC中如何通过简单的注释实现表单数据验证. 在javax

asp.net 文件上传实例汇总_实用技巧

ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关键代码: 复制代码 代码如下:      <form id="form1" runat="server">     <asp:FileUpload ID="FileUpload1" runat="server"

java web图片上传和文件上传实例_java

图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype="multipart/form-data" 2.为了能保证文件能上传成功file控件的name属性值要和你提交的控制层变量名一致, 例如空间名是file那么你要在后台这样定义 private File file; //file控件名 private String fileContentType;//图

两种java文件上传实例讲解_java

本文通过两种文件上传实例进行比较,帮助大家更好的学习java文件上传功能,具体内容如下 1. Java附件上传代码     @Controller public class UploadFile extends BaseJsonController{ /** * 附件上传 * * @param request * @param creativeFile * @param response * @return */ @RequestMapping(value = "/upload/uploadFi

php图片文件上传实例代码

 代码如下 复制代码 <html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <title>php教程图片文件上传实例代码</title> </head> <body> &

按钮-求多文件上传,带进度条的代码,?

问题描述 求多文件上传,带进度条的代码,? 用java 在mybaitys +struts2+spring 实现多文件上传 点上传按钮显进度条,上传到百分在再显示出图片.最好兼容多个浏览器. 解决方案 建议用FileUpload组件来实现 JAVA学习提高之---- FileUpload组件实现多文件上传 http://blog.csdn.net/luweifeng1983/article/details/3613544 解决方案二: 文件上传是前端的事,不干mybatis.spring,最多和

求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手!

问题描述 求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手! 解决方案 FormPanel form = new FormPanel();form .setMethod(Method.POST);form .setEncoding(Encoding.MULTIPART);FileUploadField fileUpload = new FileUploadField();fileUpload.getMessages().setBrowseText(msg.b