PHP文件上传、下载

来源:互联网 发布:属于nosql数据库的是 编辑:程序博客网 时间:2024/05/17 08:48

php上传文件处理

在PHP预定义变量这一节我们对一些预定义变量进行了一些大概的学习,其中就有$_FILES这个全局变量,那么现在再来详细的了解关于这个全局量的知识,因为我在处理文件上传时,要使用到它的相关功能。

$_FILES参数详解:
$_FILES["file"]["name"] – 被上传文件的名称
$_FILES["file"]["type"] – 被上传文件的类型
$_FILES["file"]["size"] – 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] – 由文件上传导致的错误代码

$_FILES["file"]["error"]中的["error"]值情况:
UPLOAD_ERR_OK
0:没有错误发生,文件上传成功
UPLOAD_ERR_INI_SIZE
1:上传的文件超过了 php.ini中upload_max_filesize(默认情况为2M) 选项限制的值
UPLOAD_ERR_FORM_SIZE
2:上传文件的大小超过了 HTML表单中MAX_FILE_SIZE选项指定的值
UPLOAD_ERR_PARTIAL
3:文件只有部分被上传
UPLOAD_ERR_NO_FILE
4:没有文件被上传
5:传文件大小为0
下面我们就来看看最基本的文件上传:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="hh.php" method="post"  enctype="multipart/form-data">
    <input type="file" multiple="multiple" name="myfile"/>
    <input type="submit"/>
</form>
</body>
</html>

这里尤其要注意<form>的enctype="multipart/form-data"属性,没有该属性则无法上传二进制文件(如文件,图像等)

hh.php代码如下:

<?php
$tempname = $_FILES ['myfile'] ['tmp_name'];
$fn = basename ( $_FILES ['myfile'] ['name'] );
if (is_uploaded_file ( $tempname )) {
    move_uploaded_file ( $tempname, 'upload/' . $_FILES ['myfile'] ['name'] );
}
?>

php下载文件处理

HTML页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
</head>
<body>
<a href="download.php">下载文件</a>
</body>
</html>
PHP处理页面:
<?php
/*download.php
 * 文件下载处理代码
 */
header("Content-Type:application/octet-stream");//通过这句代码客户端浏览器就能知道服务端返回的文件形式
header("Accept-Ranges:bytes");//告诉客户端浏览器返回的文件大小是按照字节进行计算的
header("Accept-Length:444444");//告诉浏览器返回的文件大小,其实是要用的filesize()函数获取
header("Content-Disposition:attachment;filename=test.html");//告诉浏览器返回的文件的名称
$file=fopen('test.html');
echo fread($file,"1024");//这里的大小是我随便给的,其实是要用的filesize()函数获取
fclose($file);
exit();
?>
还需要注意如果被下载的文件名是中文的话,需要对其进行字符编码转换,否则判断文件是否存在的函数file_exists()函数不能识别,可以使用iconv()函数进行编码转换

经过这一步的处理,在我们所指定的地方(upload)就可以得到我们上传的文件。到这里,最基本的文件上传就结束了。还说一下,我们在上传的时候一定要考虑文件的类型,要考虑文件的大小等。关于这些方面随着学习的深入再来介绍吧。

参考资料:http://www.cnblogs.com/hongfei/archive/2012/06/12/2546929.html

0 0
原创粉丝点击