前端:

<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上传文件功代码练习(单文件)的更多相关文章

  1. 本文档教授大家在yii2.0里实现文件上传 首先我们来实现单文件上传

    第一步  首先建立一个关于上传的model层  如果你有已经建好的可以使用表单小部件的model层 也可以直接用这个.在这里我们新建一个新的model层 在model层新建文件  Upload.php ...

  2. 百度上传插件(webupload)单文件(单图片)上传设置

    var uploader = WebUploader.create({                 //auto : true,                 swf : '${ctx}/sta ...

  3. js文件上传原理(form表单 ,FormData + XHR2 + FileReader + canvas)

    目录 form表单上传 FormData + XHR2 + FileReader + canvas 无刷新本地预览压缩上传实例 目前实现上传的方式 浏览器小于等于IE9(低版本浏览器)使用下面的方式实 ...

  4. java常见3种文件上传速度对比和文件上传方法详细代码

    在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...

  5. BootStrap fileinput.js文件上传组件实例代码

    1.首先我们下载好fileinput插件引入插件 ? 1 2 3 <span style="font-size:14px;"><link type="t ...

  6. 全网最简单的大文件上传与下载代码实现(React+Go)

    前言 前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能. 我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目 ...

  7. 文件上传transferTo一行代码的bug

    本次的项目环境为 Running with Spring Boot v1.5.10.RELEASE, Spring v4.3.14.RELEASE, 服务器环境为CentOS7.0. transfer ...

  8. 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题

    response.setContentType("text/html; charset=UTF-8");  Boolean isMultipart = ServletFileUpl ...

  9. 项目总结07:JS图片的上传预览和表单提交(FileReader()方法)

    JS图片的上传预览和表单提交(FileReader()方法) 一开始没有搞明白下面这块代码的,今天有时间简单整理下 核心点:FileReader()方法 以下是代码(以JSP文件为例) <!DO ...

  10. 文件上传之——用SWF插件实现文件异步上传和头像截取

    之前写过几篇文件上传,那些都不错.今天小编带领大家体会一种新的上传方法,及使用Flash插件实现文件上传. 使用Flash的好处就是可以解决浏览器兼容性问题.之前我写的一个快捷复制功能也是利用的Fla ...

随机推荐

  1. Intellij IDEA 去掉Mapper文件中的背景

    1.在setting中输入:inspection --> SQL 2.去掉背景颜色,Apply即可

  2. manacher算法求最长回文子串

    一:背景 给定一个字符串,求出其最长回文子串.例如: s="abcd",最长回文长度为 1: s="ababa",最长回文长度为 5: s="abcc ...

  3. SVN版本控制软件

    一.版本控制软件 1.为什么需要版本控制软件 问题:① 团队开发 ② 异地协作 ③ 版本回退 2.解决之道 SCM(Software Configuration Management):软件配置管理 ...

  4. 【java】线程安全的整型类AtomicInteger

    一.遇见AtomicInteger 在看项目代码的时候看到这个类,发现其功能很简单,就是一个整型变量的类型,出于好奇看了其类定义. 该类位于java.util.concurrent.atomic下,在 ...

  5. 【BZOJ 4104】【THUSC 2015】解密运算

    http://www.lydsy.com/JudgeOnline/problem.php?id=4104 网上题解满天飞,我也懒得写了 #include<cstdio> #include& ...

  6. 【贪心】Gym - 101201I - Postman

    题意:一个邮递员从数轴上原点出发,每次最多带K封信,往n个地方送信,每个地方有一定的需求的信件数,问你最少要跑的距离的总和是多少?一趟可以给多个地方去送. 显然优先往远的地方送比较优越,近的地方可以顺 ...

  7. 【插头dp】CDOJ1690 这是一道比CCCC简单题难的简单题

    最裸的插头dp,可参见大白书. #include<cstdio> #include<cstring> using namespace std; #define MOD 1000 ...

  8. 【搜索】bzoj3109 [cqoi2013]新数独

    搜索,没什么好说的.要注意读入. Code: #include<cstdio> #include<cstdlib> using namespace std; ][]= {{,, ...

  9. 20162325金立清 实验四 Android程序设计 实验报告

    实验四 Android程序设计 实验报告 代码托管地址 码云链接 实验内容 安装使用Android Stuidio Activity测试 UI测试 布局测试 事件处理测试 Android程序设计-1 ...

  10. [转]Java中fina以及static的意义

    一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效 ...