[上传文件]记录一下php上传文件及上传文件的临时文件路径的位置配置。

jackxiang 2010-3-31 12:03 | |
[root@test user]# php -i|grep upload_tmp_dir
upload_tmp_dir => no value => no value
-----------------------------------------------------------------
主要步骤:
1、根据网页中设定位置,自建一个用于存储文件的文件夹cyupload
2、修改cyupload的权限,进入/tmp文件夹中,chmod 777 cyupload -R
3、修改php.ini文件,修改上传文件大小限制。
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 200m ;望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size = 200m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。
进一步配置以下的参数
max_execution_time = 0 ;
max_input_time = 2400 ;每个PHP页面接收数据所需的最大时间默认60秒
memory_limit = 256m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
------------------------------------------------------------------------------------------------------------------------------------------------

上传html文件


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Upload File</title>
</head>
<body>
<form enctype="multipart/form-data" action="uploadFile.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE"  value="100000" />
    <div align="center">
        <center> 请选取文件:
            <input name="file" type="file" id="file"/>
            <input type="submit" value="Send File" />
        </center>
    </div>
</form>
</body>
</html>



后台处理文件


<?php
if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 100000)){
    if ($_FILES["file"]["error"] > 0){
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }else{
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

        if (file_exists("upload/" . $_FILES["file"]["name"])){
            echo $_FILES["file"]["name"] . " already exists. ";
        }else{
            move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}else{
    echo "Invalid file";
}
?>



里面有一个MAX_FILE_SIZE ,MAX_FILE_SIZE这个特性是php提出的,其本意是当用户上传超过该大小时让浏览器端直接作出反应。但这项提议不被两大主流浏览器ie和 firefox支持。在这两个浏览器下测试就会发现,还是要等到上传了MAX_FILE_SIZE的大小。所以并没有起到在浏览器端就阻止用户上传的目的。

另外,记录一下$_FILE["file"]["error"]的描述:
Error 1:上传文件的大小超过了服务器端设置的大小。
Error 2:上传文件的大小超过了MAX_FILE_SIZE的大小。
来源:
http://ffpan.ctripued.com/2009/12/15/php-upload-file/

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2876/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-4-17 15:38
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]