简单的单个文件上传

<?php
/*
html 代码

<form enctype="multipart/form-data" action="upload.php" method="post" name="formtest">
<input type="hidden" name="max_file_size">
<input name="file" type="file">  
<input type="submit" value="上传文件">
</form>

*/


$formname = 'file';
$path = 'test';
$allowtype_array = array('mp3','txt','jpg');
var_dump($_FILES['file']);exit;

upload_file($formname,$path,$allowtype_array);



    /************文件上传函数******************/   
    /*   
    *$formname                       Html上传表单名称   
    *$allowtype_array                允许上传的文件类型数组   
    *$allow_size                     允许上传的文件最大大小,默认是8MB   
    *$isRename                       是否需要重命名被上传的文件   
    */   
    function upload_file($formname,$path,$allowtype_array,$allow_size='1048576*8',$isRename=false){   
     if($_FILES[$formname]['tmp_name']=='' || $_FILES[$formname]['name']=='' || $_FILES[$formname]['size']==0){   
      return false;   
     }   
     if(!file_exists('uploadfiles/'.$path)){   
      if(!mkdir('uploadfiles/'.$path,0777)){   
       WriteErrMsg('创建上传文件保存文件目录失败,请联系管理员检查目录权限');   
      }   
     }   
     if($_FILES[$formname]['size']>$allow_size){   
      WriteErrMsg('上传文件过大,请将上传文件限制在'.number_format($allow_size/1048576,'2','.','').'MB以内');   
     }   
     $file_name_array=explode('.',$_FILES[$formname]['name']);   
     $file_type=strtolower($file_name_array[count($file_name_array)-1]);   
     if(!in_array($file_type,$allowtype_array)){   
      WriteErrMsg('上传文件类型错误,仅允许上传后缀名为 .'.implode(' .',$allowtype_array).'的文件');   
     }   
     $save_name=date('YmdHis').'_'.$_FILES[$formname]['name'];
     if(!move_uploaded_file($_FILES[$formname]['tmp_name'],'uploadfiles/'.$path.'/'.$save_name)){   
      WriteErrMsg('文件上传过程中发生错误,请重新上传');   
     }   
     switch($_FILES[$formname]['error']){   
      case 0:   
       return $save_name;   
      break;   
      case 1:   
       WriteErrMsg('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');   
      break;   
      case 2:   
       WriteErrMsg('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');   
      break;   
      case 3:   
       WriteErrMsg('文件只有部分被上传');   
      break;   
      case 4:   
       WriteErrMsg('没有文件被上传');   
      break;   
      default:   
       WriteErrMsg('能出现这条错误提示,日子也该混到头了');   
      break;   
     }   
    }
    
    function WriteErrMsg($msg)
    {
        echo $msg;exit('222');
    }

    /*
$_FILES['userfile']['name'] 客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。

$_FILES['userfile']['error'] 和该文件上传相关的错误代码
值:0; 没有错误发生,文件上传成功。
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
值:3; 文件只有部分被上传。
值:4; 没有文件被上传。

大文件上传设置:
打开php.ini,
参数 设置 说明
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir -- 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
    */

posted @ 2013-10-18 11:44  jami918  阅读(194)  评论(0)    收藏  举报