//图片存储路径
$path = 'img/' . date('Ymd');
$ext_list = array('png', 'gif', 'jpg', 'jpeg');
//图片存储路径end
if (!empty($image['tmp_name']) && $image['size'] > 0) {
$pic = upload_file($image, $path, date('His') . rand(100, 999), $ext_list);
if ($pic['error'] == 1) {
die("<script>alert('" . $pic['info'] . "');history.go(-1);</script>");
}
$image_url = $pic['info'];
}
/**
*上传图片指定文件名
* @param string $path 上传文件保存的文件夹
* @param array $file 上传的文件内容
* @param string $filename 上传文件的名字
* @param array $ext_list 上传文件允许的类型 为空代表不限制上传文件的类型
* @param int $maxsize 上传文件允许的最大尺寸 为空代表不限制上传文件大小,单位:M
*/
function upload_file($file, $path, $filename, $ext_list = array(), $maxsize = 0)
{
$root = $_SERVER['DOCUMENT_ROOT'];
$img_path = 'http://' . $_SERVER['HTTP_HOST'];
//自动创建文件
if (!file_exists($root . $path)) {
mkdir(iconv("UTF-8", "GBK", $root . $path), 0777, true);
}
$res = array('error' => 1, 'info' => '');
//文件上传错误信息
if ($file['error'] != 0) {
switch ($file['error']) {
case 1:
$info = '1,文件大小超过了 php.ini 中 upload_max_filesize 选项限制的值。';
break;
case 2:
$info = '2,文件大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
break;
case 3:
$info = '3,文件只有部分被上传。';
break;
case 4:
$info = '4,没有文件被上传。';
break;
case 6:
$info = '6,找不到临时文件。';
break;
case 7:
$info = '7,文件写入失败。';
break;
default:
$info = 'undefined,未知错误类型。';
}
$res['info'] = '上传失败:' . $info;
return $res;
}
//上传文件尺寸过大
if ($maxsize > 0) {
if ($file['size'] / 1024 / 1024 > $maxsize) {
$res['info'] = '上传失败:文件大小超过' . $maxsize . 'M。';
return $res;
}
}
//文件类型不支持
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
if (!empty($ext_list)) {
if (!in_array($ext, $ext_list)) {
$res['info'] = '上传失败:文件类型“' . $ext . '”不在支持的类型“' . implode('、', $ext_list) . '”里。';
return $res;
}
}
$path_other = $path . '/' . $filename . '.' . $ext;
//是不是有效的上传文件
if (is_uploaded_file($file['tmp_name'])) {
//移动文件实现文件上传
if (move_uploaded_file($file['tmp_name'], $root . $path_other)) {
$res['error'] = 0;
$res['info'] = $img_path . $path_other;
return $res;
} else {
$res['info'] = '上传失败:文件移动' . $root . $path_other . '失败。';
return $res;
}
} else {
$res['info'] = '上传失败:不是有效的上传文件。';
return $res;
}
}