简单的单个文件上传
<?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
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
*/

浙公网安备 33010602011771号