在公司制作大冶咪力豆奶网站的时候,导航栏目下面有一个人才招聘的二级菜单,里面有招聘信息和求职中心,我在求职中心做了个应聘的表单,提交到后台可以查看相关应聘者的信息,其中这里面有个可以上传附件的文本域,之前在做先锋旅游网站的时候碰到过文件上传的相关问题,那个网站是同事处理的.
(该企业网站项目也是用phpcms制作的),于是我就参考了以前的解决方法,但是还是遇到了一些小问题.就是文件上传的部分在后台一直看不到相关的信息,即没有上传成功.
记得当时是周五,我下午下班的时候最后一个走的,还是没有找到原因.(一些表单中该注意的,或者添加的相关信息也都弄了),晚上也没怎么睡好,第二天周末我一个人来到公司,继续查找相关的问,我将前台提交的数据都打印出来看下,其他的信息都能够正确的打印出来,就是上传附件的那个一直为空,于是我就继续对应查找相关的字段是否有问题,结果我将$_FILES['name']打印出来看下,却显示1,上网查找结果发现了问题,(注意修改php.ini 中 upload_max_filesize的文件限制大小)
就是我的本地phpstudy中的配置文件php.ini中的upload_max_filesize文件限制了大小2M,修改这个值,保存后重新开启服务器即可.当时感觉到心情好了许多,以后遇到问题还是要多尝试,多打印调试.程序就是慢慢调试出来的.(遇到问题,解决问题,享受解决问题带来的快乐,~~~)
1.文件上传前台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>
<!-- 此行定义字符集,在使用汉字的国家,字符集通常有 gb2312,utf-8两种字符集,设置不对会导致页面中文乱码因为我的编辑器是utf-8的,所以这里我定义字符集为utf-8。如果你的字符集是gb2312可以修改charset值 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- 此行多是IE浏览器不兼容导致的,现在IE6,IE7使用的人数不多了,大多数可以忽略 -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<!-- 定义文档标题 -->
<title>PHP上传实例</title>
<!-- 加入js脚本,简单的前端判断,防止没有选择上传文件就点击提交 -->
<script type="text/javascript">
// 当页面加载完后执行里边的函数体
// 因为页面的加载顺序是自上到下,否则你把JS移到页脚也可以
window.onload = function() {
// 给上传按钮添加鼠标单击事件
document.forms[0].elements[1].onclick = function() {
// 判断要上传的文件名是否为空
if (document.forms[0].upfile.value == '') {
// 如果是空则弹出警告
alert('请先选择文件');
// 结束脚本运行
return false;
}
// 如果文件不为空则上传文件
document.forms[0].submit();
}
}
</script>
</head>
<body>
<div align="center" style="width:60%; height:300px; font-size:13px;margin:0 auto;">
<h3>上传图片预览</h3>
<form name="frm" action="upload.php" method="post" enctype="multipart/form-data">
<font style="letter-spacing:1px" color="#FF0000">*只允许上传jpg|png|bmp|pjpeg|gif格式的图片</font>
<br /><br />
请选择图片:
<input name='upfile' type='file' />
<input name="btn" type="submit" value="上传" /><br />
</form>
</div>
</body>
</html>
2.后台php处理页面相关代码:
<?php
//全局变量
$arrType=array('image/jpg','image/gif','image/png','image/bmp','image/pjpeg','image/jpeg');
$max_size='1024000000'; // 最大文件限制(单位:byte)
$upfile='./uploadimage'; //图片目录路径
$file=$_FILES['upfile'];
//print_r($file);
//exit;
if($_SERVER['REQUEST_METHOD']=='POST'){ //判断提交方式是否为POST
if(!is_uploaded_file($file['tmp_name'])){ //判断上传文件是否存在
echo "<font color='#FF0000'>文件不存在!</font>";
exit;
}
if($file['size']>$max_size){ //判断文件大小是否大于500000字节
echo "<font color='#FF0000'>上传文件太大!</font>";
exit;
}
if(!in_array($file['type'],$arrType)){ //判断图片文件的格式
echo "<font color='#FF0000'>上传文件格式不对!</font>";
exit;
}
if(!file_exists($upfile)){ // 判断存放文件目录是否存在
mkdir($upfile,0777,true);
}
$imageSize=getimagesize($file['tmp_name']);
$img=$imageSize[0].'*'.$imageSize[1];
$fname=$file['name'];
$ftype=explode('.',$fname);
$fn=date("YmdHis");
$picName=$upfile."/ $fn".$fname;
//echo $picName;
//exit;
if(file_exists($picName)){
echo "<font color='#FF0000'>同文件名已存在!</font>";
exit;
}
if(!move_uploaded_file($file['tmp_name'],$picName)){
echo "<font color='#FF0000'>移动文件出错!</font>";
exit;
}
else{
echo "<font color='#FF0000'>图片文件上传成功!</font><br/>";
echo "<font color='#0000FF'>图片大小:$img</font><br/>";
echo "图片预览:<br><div style='border:#F00 1px solid; width:$imageSize[0];height:$imageSize[1]'>
<img src=\"".$picName."\">图片文件名称:$fn$fname</div>";
}
}
?>
Comments
请在后台配置评论类型和相关的值。