PHP上传文件功代码练习(单文件)
前端:
<html>
<head><title>upload file</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action="uploadtest.php" method="post" enctype="multipart/form-data">
<!-- name必须是MAX_FILE_SIZE,value是字节数 -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152"/>
<!-- accept是文件的MIME类型 -->
<input type="file" name="fileName" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" />
<input type="submit" value="上传文件"/>
</form>
</body>
</html>
上传文件的函数:
<?php
header('content-type:text/html;charset=utf-8'); function uploadFile($file,$uploadpath='upload',$extarray=['jpg','jpeg','gif','png','bmp'],$max=2097152,$flag=false){ //$file=@$_FILES['fileName'];
//var_dump($file);
//$max=2097152; //加入到参数中,默认2M
//由于客户端限制靠不住,所以也要在服务端进行限制。
//限制文件的大小;
if ($file['size']>$max) { exit('文件过大,不能上传。');
# code...
} if ($file['error']!==0) { switch($file['error']){
case 1:
$errmsg= "上传文件超过了php.ini中upload_max_filesize选项限制的值。";
break; case 2:
$errmsg= "上传文件的大小超过了HTML表单中max_file_size选项指定的值。";
# code...
break;
case 3:
$errmsg= "文件只有部分被上传";
# code...
break;
case 4:
$errmsg= "没有文件被上传";
# code...
break;
case 6:
$errmsg= "找不到临时文件夹。";
# code...
break;
case 7:
case 8:
$errmsg= "系统出错";
# code...
break;
} exit($errmsg);
# code...
}else{
//判断是否是通过HTTPPost上传
if (!is_uploaded_file($file['tmp_name'])) { exit('不是通过HTTP Post上传');
# code...
} //判断文件格式
//也可以用 pathinfo($file['name'],PATHINFO_EXTENSION);
$ext=@strtolower(end(explode('.', $file['name'])));
//$extarray=['jpg','jpeg','gif','png','bmp'];//加入到数组中,定制文件类型
if (!in_array($ext, $extarray)) { exit('文件格式错误');
# code...
} //判断是否是真正的图片
if($flag===true){
if (@!getimagesize($file['tmp_name'])) { exit('不是真正的图片');
# code...
}
}
//指定上传目录
//$uploadpath='upload';//加入到参数中 默认值为'upload' //判断文件是否存在
if (!file_exists($uploadpath)) { mkdir($uploadpath,0777,true);
chmod($uploadpath, 0777);
# code...
} //确保每个上传的文件有唯一的名字
$newname=md5(uniqid(microtime(true),true)).'.'.$ext;
$pathname=$uploadpath.'/'.$newname; if (move_uploaded_file($file['tmp_name'], $pathname)) { // exit('上传成功');
// # code...
return $pathname;
} } } ?>
使用函数:
<?php
include('upload.func.php');
$file=$_FILES['fileName']; $new=uploadFile($file,'lijian',$extarray=['txt','html']);
echo $new;
PHP上传文件功代码练习(单文件)的更多相关文章
- 本文档教授大家在yii2.0里实现文件上传 首先我们来实现单文件上传
第一步 首先建立一个关于上传的model层 如果你有已经建好的可以使用表单小部件的model层 也可以直接用这个.在这里我们新建一个新的model层 在model层新建文件 Upload.php ...
- 百度上传插件(webupload)单文件(单图片)上传设置
var uploader = WebUploader.create({ //auto : true, swf : '${ctx}/sta ...
- js文件上传原理(form表单 ,FormData + XHR2 + FileReader + canvas)
目录 form表单上传 FormData + XHR2 + FileReader + canvas 无刷新本地预览压缩上传实例 目前实现上传的方式 浏览器小于等于IE9(低版本浏览器)使用下面的方式实 ...
- java常见3种文件上传速度对比和文件上传方法详细代码
在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...
- BootStrap fileinput.js文件上传组件实例代码
1.首先我们下载好fileinput插件引入插件 ? 1 2 3 <span style="font-size:14px;"><link type="t ...
- 全网最简单的大文件上传与下载代码实现(React+Go)
前言 前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能. 我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目 ...
- 文件上传transferTo一行代码的bug
本次的项目环境为 Running with Spring Boot v1.5.10.RELEASE, Spring v4.3.14.RELEASE, 服务器环境为CentOS7.0. transfer ...
- 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题
response.setContentType("text/html; charset=UTF-8"); Boolean isMultipart = ServletFileUpl ...
- 项目总结07:JS图片的上传预览和表单提交(FileReader()方法)
JS图片的上传预览和表单提交(FileReader()方法) 一开始没有搞明白下面这块代码的,今天有时间简单整理下 核心点:FileReader()方法 以下是代码(以JSP文件为例) <!DO ...
- 文件上传之——用SWF插件实现文件异步上传和头像截取
之前写过几篇文件上传,那些都不错.今天小编带领大家体会一种新的上传方法,及使用Flash插件实现文件上传. 使用Flash的好处就是可以解决浏览器兼容性问题.之前我写的一个快捷复制功能也是利用的Fla ...
随机推荐
- java中常用的String方法
1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...
- NET/ASP.NET MVC Controller 控制器(一:深入解析控制器运行原理)
阅读目录: 1.开篇介绍 2.ASP.NETMVC Controller 控制器的入口(Controller的执行流程) 3.ASP.NETMVC Controller 控制器的入口(Controll ...
- ZOJ 2974 Just Pour the Water
矩阵快速幂. 构造一个矩阵,$a[i][j]$表示一次操作后,$j$会从$i$那里得到水的比例.注意$k=0$的时候,要将$a[i][j]$置为$1$. #pragma comment(linker, ...
- go chapter 5 - 异常处理 error、panic、recover
https://blog.csdn.net/tennysonsky/article/details/78946265 error(不中断).panic(中断).recover(拦截中断 类似于 ca ...
- curator管理es索引
安装curator------------------rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch vi /etc/yu ...
- 【爬虫】python 多线程知识
第一段代码: __author__ = 'Administrator' import threading import time index = 0 class MyThread(threading. ...
- WAR/EAR 概念
In J2EE application, modules are packaged as EAR, JAR and WAR based on their functionality JAR: EJB ...
- JavaScript中的Array数组详解
ECMAScript中的数组与其他多数语言中的数组有着相当大的区别,虽然数组都是数据的有序列表,但是与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据.也就是说,可以用数组的第 ...
- bzoj 2468: [中山市选2010]三核苷酸
2468: [中山市选2010]三核苷酸 Description 三核苷酸是组成DNA序列的基本片段.具体来说,核苷酸一共有4种,分别用’A’,’G’,’C’,’T’来表示.而三核苷酸就是由3个核苷酸 ...
- 大于非负整数N的第一个回文数 Symmetric Number
1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式. 2.样例 1 --> 2 9 -->11 12345 -->12421 123456 --> ...