用PHP实现单文件上传,要求只能上传jpg格式,文件大小2M以下,同名文件不能覆盖,不同

用PHP实现单文件上传,要求只能上传jpg格式,文件大小2M以下,同名文件不能覆盖,不同的错误要有不同的提示。... 用PHP实现单文件上传,要求只能上传jpg格式,文件大小2M以下,同名文件不能覆盖,不同的错误要有不同的提示。 展开
 我来答
pzl7758
2015-05-29 · TA获得超过603个赞
知道小有建树答主
回答量:962
采纳率:100%
帮助的人:633万
展开全部
<?php
define('ROOT', dirname(dirname(dirname(dirname(__FILE__)))));
 
//文件保存目录路径
$save_path = ROOT . '/sWeb/upfile/kEditor/'.date('Ymd').'/';
 
if (!is_dir($save_path)) mkdir($save_path, 0777, true);
 
//文件保存目录URL

$save_url = $web_url . '/upfile/kEditor/'.date('Ymd').'/';
 
//定义允许上传的文件扩展名
$ext_arr = array('jpg', 'jpeg');
 
//最大文件大小
$max_size = 104857600;
 
//更改目录权限
@mkdir($save_path, 0777);
$img_id = time().mt_rand();
 
//有上传文件时
if (empty($_FILES) === false) {
    //原文件名
    $file_name = $_FILES['imgFile']['name'];
    
    //服务器上临时文件名
    $tmp_name = $_FILES['imgFile']['tmp_name'];
    
    //文件大小
    $file_size = $_FILES['imgFile']['size'];
    
    //检查文件名
    if (!$file_name) {
        alert("请选择文件。");
    }
    
    //检查目录
    if (@is_dir($save_path) === false) {
        alert("上传目录不存在。");
    }
    
    //检查目录写权限
    if (@is_writable($save_path) === false) {
        alert("上传目录没有写权限。");
    }
    
    //检查是否已上传
    if (@is_uploaded_file($tmp_name) === false) {
        alert("临时文件可能不是上传文件。");
    }
    
    //检查文件大小
    if ($file_size > $max_size) {
        alert("上传文件大小超过限制。");
    }
    
    //获得文件扩展名
    $temp_arr = explode(".", $file_name);
    $file_ext = array_pop($temp_arr);
    $file_ext = trim($file_ext);
    $file_ext = strtolower($file_ext); 
    $imgtitle = empty($_POST['imgTitle']) ? $file_name : $_POST['imgTitle'];
 
    //检查扩展名
    if (in_array($file_ext, $ext_arr) === false) {
        alert("上传文件扩展名是不允许的扩展名。");
    }
    
    //移动文件
    //$file_path = $save_path . $file_name;
    $file_path = $save_path . $img_id .".". $file_ext;
    if (move_uploaded_file($tmp_name, $file_path) === false) {
        alert("上传文件失败。");
    }
    //$file_url = $save_url . $file_name;
    $file_url = $save_url . $img_id .".". $file_ext;
}
 
//提示,关闭层
function alert($msg)
{
    echo '<html>';
    echo '<head>';
    echo '<title>error</title>';

    echo '</head>';
    echo '<body>';
    echo '<script type="text/javascript">alert("'.$msg.'");history.back();</script>';
    echo '</body>';
    echo '</html>';
    exit;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式