根据同事代码整理而得
html
<form action="/admin/file/save" method="post" enctype="multipart/form-data"> //enctype="multipart/form-data"
<input type="file" name="image"/>
<input type="submit"/>
</form>
php
if(0==$_FILES['image']['size']){ //上传文件大小 $_FILES['image']['size']
return $this->view->err = '请选择文件';
}
$exif = getimagesize($_FILES['image']['tmp_name']);//$_FILES['image']['tmp_name']文件上传后服务器存储的临时文件名 getimagesize获得大小
$formats= array('image/png','image/jpeg','image/gif','image/x-ms-bmp');
if(!in_array($exif['mime'], $formats)){ //$exif['mime']格式类型 也可以用$_FILES['image']['type']不过这个就不是临时文件了。
return $this->view->err = '只支持 jpg、gif、png、bmp 格式。';
};
$date = date('Y-m-d');
if(!is_dir(UPLOAD_DIR.'/'.$date)){mkdir(UPLOAD_DIR.'/'.$date);} //is_dir()检查指定的文件是否是目录,不是的话,mkdir()创建
$image_name = '/'.$date.'/'.time().rand().'.'.strtolower(substr($_FILES['image']['name'], strrpos($_FILES['image']['name'], '.')+1)); //substr($_FILES['image']['name'], strrpos($_FILES['image']['name'], '.')+1); substr($str, 位置) strrpos($str, '.') .出现的位置 获取的是图片的类型 还有其他方法 $arr = explode('/', $_FILES['image']['type']) $arr[1]也是图片的类型
$image_path = UPLOAD_DIR .$image_name; //图片的路径了$image_path
if(!move_uploaded_file($_FILES['image']['tmp_name'], $image_path)){ //move_uploaded_file(),将上传的文件移到新位置,也就是将服务器的临时文件移到 图片的路径下边
$this->view->err = '上传失败';
return;
}else{
$attachment = Ata_Db_Static::getTable('Attachment')->createRow(); //成功上传后,创建Zend_Db_Table_Row对象
$attachment->size = $_FILES['image']['size']; //对象属性赋值,$_FILES['image']['size']大小
$attachment->utime = time(); //上传时间
$attachment->path = $image_name; //相对路径
$attachment->save();
}