- 浏览: 80666 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
oolala:
讲的比较不错,了解主键的设计
数据库主键设计之思考 -
fang16388:
...
用Delphi改变图片的像素,即大小 -
秀才的梦想:
有一个疑问...JS的FSO能用来操作服务器端的文件吗?谢谢啦 ...
Javascript----文件操作
本例将介绍如何用PHP 4.0
把客户端任何类型的文件上传到服务器端。文件上传是网站应用中一个极为常见的应用问题,也是目前网站的一个基本功能。比如企业上传产品图片(BMP、JPG、GIF类型的文件)、个人上传简历(Word类型文件)或者将其他类型的文件上传到服务器。
PHP 能够接受任何来自符合 RFC-1867 标准的浏览器(包括 Netscape Navigator 3 及更高版本,Microsoft
Internet
Explorer 3 加微软补丁,或者更高版本)上传的文件。PHP 的这种特性使得我们既可以上传文本文件,也可以上传二进制文件。利用 PHP的认证和文件操作函数,您就可以控制谁有上传的权限,以及在文件上传后进行哪些处理。
编程思路
本实例中文件上传主要是利用form表单提交一个File对象给服务器。其中 File 对象必须包含 Multipart/form-data的 enctype
属性.MAX_FILE_SIZE 是一个隐含的表单变量,用来限制上传文件的最大字节数。同时考虑到大文件上传容易造成超时的情况,所以可以用
set_time_limit($TimeLimit) 来加大超时限制时间。
表单提交后,PHP 将检测上载的文件。文件存放在服务器上的一个临时目录中.同时生成—个与文件域同名的几个变量,如 _name代表文件名称,_size代表文件大小的字节数,_type代表文件MIME类型。由于临时目录下的文件近期会被删除,所以必须利用函数move_uploaded_file将文件拷贝到指定的路径或重新命名。
创作步骤
一、创建客户端文件上传的表单
<form enctype="multipart/form-data" action="" method="post">
请选择文件: <br>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input name="upload_file" type="file"><br>
<input type="submit" value="上传文件">
</form>
MAX_FILE_SIZE 隐藏域(单位为字节)必须先于文件输入域,其值为接收文件的最大尺寸。同时,要保证您的文件上
传表单中要有
enctype="multipart/form-data",否则文件上传将不能工作。
警告 :
MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该
值。实际上,PHP
设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上
MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。
二、通过$_FILES 数组获取相关的变量
这些数组将包含所有关于您上传的文件的信息,
我们假设文件上传字段的名称为 userfile。名称可随意命名。
$_FILES['userfile']['name']
客户端机器文件的原名称。
$_FILES['userfile']['type']
文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size']
已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']
文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']
和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。
接受上传文件的 PHP 脚本必须在文件上传后进行判断,来决定接下来要对该文件进行那些操作。例如,您可以通过
$_FILES['userfile']['size'] 变量来忽略尺寸太大或太小的文件,也可以通过 $_FILES['userfile']['type']
变量来过滤文件类型和某种标准不相符合的文件。在 PHP 4.2.0 以上版本,您还可以通过 $_FILES['userfile']
['error']
变量来根据不同的错误代码来做相关的判断。不管做何种的判断,您必须将该文件从临时目录中删除,要么将其移动
到其它的地方。
如果表单中没有选择上传的文件,则 PHP 变量 $_FILES['userfile']['size'] 的值将为
0,$_FILES['userfile']['tmp_name'] 将为 none。
如果该文件没有被移动到其它地方也没有被改名,则该文件将在表单请求结束时被删除。
文件被上传后,默认地会被储存到服务端的默认临时目录中,除非您将 php.ini 中的 upload_tmp_dir
设置为了其它的路径。服务端的默认临时目录可以通过更改 PHP 运行环境的环境变量 TMPDIR 来重新设置,但是在
PHP 脚本内部通过运行 putenv()
函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。
三、本例程序代码
<html><head>
<title>上载文件表单</title></head>
<body>
<form enctype="multipart/form-data" action="" method="post">
请选择文件: <br>
<input name="upload_file" type="file"><br>
<input type="submit" value="上传文件">
</form>
</body>
</html>
<?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
$upload_file_size=$_FILES['upload_file']['size'];
if($upload_file){
$file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
$store_dir = "d:/fileupload/";// 上传文件的储存位置
$accept_overwrite = 1;//是否允许覆盖相同文件
// 检查文件大小
if ($upload_file_size > $file_size_max) {
echo "对不起,你的文件容量大于规定";
exit;
}
// 检查读写文件
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
echo "存在相同文件名的文件";
exit;
}
//复制文件到指定目录
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件失败";
exit;
}
}
Echo "<p>你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "<br>";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "<br>";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "<br>";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "<br>";
$Error=$_FILES['upload_file']['error'];
switch($Error){
case 0:
Echo "上传成功"; break;
case 1:
Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
case 2:
Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break;
case 3:
Echo "文件只有部分被上传";break;
case 4:
Echo "没有文件被上传";break;
}
发表评论
-
用php得到网卡mac
2008-05-14 17:39 1067<?php $command = escapeshell ... -
MimeTypes说明
2008-05-14 17:38 9264<?php $mimetypes = array( ' ... -
个人不成熟作品全静态站点引思
2008-05-14 17:36 835php代码: <?/************** ... -
个人不成熟分页类
2008-05-14 17:33 734<? class turnpage { ... -
PHP匹配类
2008-05-14 17:30 1399<? #####从页码源代码中获得资料的类####### ... -
php走势图
2008-05-14 17:28 1793<?php Header("Content-t ... -
PHP数据放入数据库和取出来显示在页面需要注意点
2008-05-14 17:25 877入库时 $str=addslashes($str); $sql ... -
PHP数据库备份函数
2008-05-14 17:23 1882<? //数据库备份函数 function backu ... -
smarty 模板实例教程
2008-05-14 17:18 2549smarty实例教程(原创) ---模板设计部分关键词:sma ... -
使用"模板驱动方式"简化开发----smarty插件的使用
2008-05-14 17:15 2249原贴:[URL="http://phpx.com/h ... -
curl_setopt
2008-05-14 17:11 1415curl_setopt(PHP 4 >= 4.0. ... -
curl cookie和post用法
2008-05-14 17:10 4186<?php /* #利用cookie和post用法 */ ... -
curl cookie 用法
2008-05-14 17:09 2727<?php /* #cookie用法 */ $coo ... -
表单验证类 Validator for PHP
2008-05-14 17:07 1836<title>表单验证类 Validator fo ... -
动态线形图、柱形图、饼形图、3d饼形图生成代码
2008-05-14 17:01 2563程序4-3 //假设利用文件count.txt保存计数值 &l ... -
xajax类
2008-05-14 16:57 903xajax类:http://xajax.sourceforge ...
相关推荐
PHP文件上传类,自定义配置,包括单文件和多文件上传(检测文件大小,文件格式,文件重命名,错误返回,全部封装在一个类中)
php文件上传插件(简洁好用的上传插件)需要的赶快来下载
使用wamp集成工具,结合phpStrom写的PHP文件上传图片,上传后并在HTML页面上展示的例子
php文件上传函数,直接用就好了 觉得好用,就分享了
一个php文件上传处理类库
php文件上传进度条
php文件上传类,很简单的实例,是初学php的很好的参考资料
php文件上传代码
自己编写的php文件上传类,可以在配置文件中限制文件的数量、大小、目录和格式等等,在此分享给大家,希望能给我好的建议
强大的php文件上传类强大的php文强大的php文件上传类件上传类
PHP文件上传与下载学习笔记 PHP版本:1、文件上传配置 文件上传后,Php获取的上传文件的信息 PHP端config配置文件配置
PHP文件上传/PHP文件上传 PHP文件上传/PHP文件上传 PHP文件上传/PHP文件上传
uploaddify+php多文件上传,带进度条,经过自己测试,文件可以上传成功,可以进入uploaddify官网修改相关参数和代码,但在移动端似乎不能使用
php文件上传代码以及封装的上传类,<?php //接收 $username=$_POST['username']; $fileintro=$_POST['fileintro']; //echo $username.$fileintro; //获取文件信息 /* echo "<pre>"; print_r($_FILES); ...
通过php实现文件上传,可以将文件上传至服务器端
分享一个比较全面的php文件上传类,指定上传文件保存的路径,对上传文件初使化,查看用户参数中数组的下标是否和成员属性名相同。
PHP文件上传类源码PHP文件上传类源码
php文件上传类,能自定义上传文件类型,设置文件上传大小,能满足你所需求的
php文件上传,上传源码!~~php文件上传,上传源码!~~欢迎大家讨论
php文件上传类程序代码 public $max_size = '1000000';//设置上传文件大小 public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称 public $allow_types;//允许上传的文件扩展名,不同...