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 ...
随机推荐
- 【Numpy】python机器学习包Numpy基础知识学习
一.安装:在之前的博客中已经写过:http://www.cnblogs.com/puyangsky/p/4763234.html 二.python数组切片知识: python中序列类有list.str ...
- SqlHelper——只因为在人群中多看了你一眼
对SQLHelper,还是有一点陌生的,但是大多数人都在使用,我就有一种想了解并使用的意愿,于是查了很多资料,发现一片不错的博客,放在下面,作为自己或读者使用的材料. 一.SqlHelper 出场 不 ...
- 【DFS】【图论】NOIP2014寻找道路
[NOIP2014]寻找道路 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所 ...
- 【推导】【模拟】AtCoder Regular Contest 082 F - Sandglass
题意:有个沙漏,一开始bulb A在上,bulb B在下,A内有a数量的沙子,每一秒会向下掉落1.然后在K个时间点ri,会将沙漏倒置.然后又有m个询问,每次给a一个赋值ai,然后询问你在ti时刻,bu ...
- 【扫描线】Gym - 100781G - Goblin Garden Guards
平面上有100000个哥布林和20000个圆,问你不在圆内的哥布林有多少个. 将每个圆从左到右切2r+1次,形成(2r+1)*2个端点,将上端点记作入点,下端点记作出点,再将这些点和那些哥布林一起排序 ...
- 【最小生成树】【kruscal】【贪心】CDOJ1636 梦后楼台高锁,酒醒帘幕低垂
首先,考虑到,我们需要找到一条路径,使它的最小边尽量大,最大边尽量小 然后,考虑到m比较小,我们可以去寻找一个m^2或者m^2logm的算法 考虑枚举最小边,那么我们就需要在m或者mlogm的时间内找 ...
- 【Java】【滚动数组】【动态规划】UVA - 11137 - Ingenuous Cubrency
滚动数组优化自己画一下就明白了. http://blog.csdn.net/u014800748/article/details/45849217 解题思路:本题利用递推关系解决.建立一个多段图,定义 ...
- 【CCpp程序设计2017】简单进销存
题目:简单进销存 功能要求: 实现如下的菜单(按数字选择菜单功能): 1. 显示存货列表 2. 入库 3. 出库 4. 退出程序 实现菜单对应功能(需记录货物的型号.数量等信息): 程序启动时从文件中 ...
- React中的表单元素
在web应用开发当中,表单还是很重要的元素. 应用表单组件有:文本框(input.textarea).单选按钮和复选框.Select组件. 文本框:文本框的状态改变即文本框中的内容的改变.此时的sta ...
- Linux下KVM的图形界面管理工具(virt-manager)(桌面版)
背景: virt-manager是用于管理KVM虚拟环境的主要工具,virt-manager默认设置下需要使用root用户才能够使用该工具.当你想在KVM hypervisor服务器上托管虚拟机,由最 ...