前端:

<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. cv论文(Low-rank相关)

    最近把以前的几篇关于Low-rank的文章重新看了一遍,由于之前的一些积累,重新看一遍感觉收获颇多.写这篇博文的时候也参考了一些网上的博客,其中数这篇博文最为经典http://blog.csdn.ne ...

  2. C#读取csv文件使用字符串拼接成XML

    phone.csv zhangsan1, zhangsan2, zhangsan3, static void Main(string[] args) { //XML //XML就是一个文件,用来存储数 ...

  3. Codeforces Round #119 (Div. 2) Cut Ribbon(DP)

    Cut Ribbon time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  4. 关于matplotlib,你要的饼图在这里

    Table of Contents 1  官方Demo 2  将实际数据应用于官方Demo 3  一些改善措施 3.1  重新设置字体大小 3.2  设置显示颜色,Method 1: 3.3  设置显 ...

  5. VMware Workstation的三种网络连接方式

    桥接模式(Bridged).NAT模式(地址转换模式).仅主机模式(Host-Only) 桥接模式就是将主机网卡与虚拟机的网卡利用虚拟网桥进行通信.在桥接的作用下,类似于把物理主机虚拟为一个交换机,所 ...

  6. 设计模式-模板方法模式(the Template Method Pattern)

    本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ 模板方法模式简介 这是一个被用的相当广泛的一种设计模式,变体也特别多,他建立一个抽象类定义一个算 ...

  7. 【动态规划】POJ1664-放苹果

    非常经典的划分数问题,即相当于把m个物体分成至多n组,求出分组总数. [思路]当前状态dp[i][j]表示将i个物体分成至多j组的分组总数.对于当前状态,有以下两种情形: (1)j组中有组为空,则这种 ...

  8. ContOS下部署javaweb项目

    1.jdk安装 下载jdk jdk-7u79-linux-x64.rpm # rpm -ivh jdk-7u79-linux-x64.rpm安装  # rpm -e jdk-7u79-linux-x6 ...

  9. Problem I: 零起点学算法88——青年歌手大奖赛_评委会打分

    #include<stdio.h> int main(void) { ],n,i; while(scanf("%d",&n)!=EOF) { n>& ...

  10. Problem E: 十六进制转十进制

    #include<stdio.h> int main(void) { ]; int sum,i; while(gets(str)!=NULL) { sum=; ;str[i]!='\0'; ...