2015-05-27
上传文件功能由两个部分组成,HTML页面和PHP处理部分。HTML页面主要是让用户选择所要上传的文件,php部分让我们可以把文件存储到服务器的指定目录。
一.HTML部分
upload.html
[html]
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body>
上传Demo:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="img" />
<input type="submit" name="submit" value="上传" />
</form>
</body>
</html>
说明:
1.Input标签中type="file",表明把输入作为文件来处理。
2.Enctype规定了在提交这个表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用"multipart/form-data",如果要上传文件,这个属性是必要的。
更多关于enctype的内容参见《HTML <form> 标签的 enctype 属性》
二.php部分
upload.php
[php]
<?php
$DST_DIR = '/data/upload/';
if ($_FILES['img']['name'] != '') {
if ($_FILES['img']['error'] > 0) {
echo "上传失败";
}
else {
if (move_uploaded_file($_FILES['img']['tmp_name'], $DST_DIR.$_FILES['img']['name'])) {
echo "上传成功";
}
else {
echo "上传失败";
}
}
}
else {
echo "请上传文件";
}
说明:
1. 全局变量$_FILE
此数组包含有所有上传的文件信息。
以我们假设文件上传字段的名称如上例所示,为 img。则
$_FILES['img']['name']
客户端上传的文件的原名称。
$_FILES['img']['type']
文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。$_FILES['img']['size']:已上传文件的大小,单位为字节。
$_FILES['img']['size']
已上传文件的大小,单位为字节。
$_FILES['img']['tmp_name']
文件被上传后在服务端储存的临时文件名。
$_FILES['img']['error']
和该文件上传相关的错误代码。
2. 关于错误码
$_FILES['img']['error']有以下几种类型
UPLOAD_ERR_OK
其值为 0,没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值。
UPLOAD_ERR_FORM_SIZE
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
其值为 3,文件只有部分被上传。
UPLOAD_ERR_NO_FILE
其值为 4,没有文件被上传。
UPLOAD_ERR_NO_TMP_DIR
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
UPLOAD_ERR_CANT_WRITE
其值为 7,文件写入失败。PHP 5.1.0 引进。
3.move_uploaded_file
文件被上传后,默认地会被储存到服务端的默认临时目录中(除非 php.ini 中的 upload_tmp_dir设置为其它的路径),文件名是随机的。如果该文件没有被移动到其它地方也没有被改名,则该文件将在表单请求结束时被删除。因此需要通过move_uploaded_file移动临时文件。
经实验copy也能完成move_uploaded_file的功能,为啥要用move_uploaded_file呢?有说法是move_uploaded_file会对上传文件做一些检查,防止copy引起的一些安全漏洞。但具体copy会带来什么问题呢?我并没有查到。有知道的同学,欢迎留言。
Anyway,既然php给了特定的函数,必然有一定道理,先这么用吧。
三.安全检查
可以考虑通过$_FILES['img']['size']和$_FILES['img']['type']对上传的文件做一些安全检查,比如限定上传类型,上传文件的大小等。
作者;qmhball
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
现代战舰手游下载v0.94.3.120515958 安卓手机版
射击枪战 1.96G
下载Modern Warships现代战舰国际服官方正版下载v0.94.3.120515958 安卓最新版
策略塔防 1.96G
下载2025指尖捕鱼新版下载v10.2.44.7.0 安卓正版
休闲益智 579.4M
下载指尖捕鱼赢话费版下载v10.2.44.7.0 安卓版
休闲益智 694.3M
下载指尖捕鱼高爆率多人捕鱼游戏下载v10.2.44.7.0 安卓版
休闲益智 466.2M
下载指尖捕鱼吴孟达版下载v10.2.44.7.0 安卓最新版
休闲益智 694.3M
下载飞机大厨2025最新版(airplane chefs)下载v12.0.2 安卓免费版
经营养成 140.3M
下载捕鱼大决战狂暴版官方版下载v122.7.286 安卓高爆版
休闲益智 153.5M
下载捕鱼大决战最新版本下载v122.7.286 安卓正版
下载
捕鱼大决战深海版游戏下载v122.7.286 安卓版
下载
拳皇14官方正版下载v2.0.0 安卓正式版
下载
勇者大战魔物娘安卓手游下载v1.10.29 安卓冷狐汉化版
下载
贝比岛最新版下载v2.5.4 安卓官方版
下载
奥特曼格斗进化3高清汉化版(Ultraman Fighting Evolution 3)下载v3.3.2 安卓免费版
下载
王者荣耀全英雄全皮肤版本下载v10.11.7.1 安卓版
下载
漫威超级战争手游下载v3.23.0 安卓手机版
下载