首页 > php教程 > PHP源码 > 正文

更改xhEditor 上传文件upload.php

PHP中文网
发布: 2016-05-25 16:58:46
原创
1738人浏览过

更改xheditor  上传文件upload.php
把上传完的图片路径改为 http 路径

PHP代码

<?php
/*!
 
 * 注2:本程序特别针对HTML5上传,加入了特殊处理
 */
header('Content-Type: text/html; charset=UTF-8');
//------定义http路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
$dir_url_http=dirname($url).'/';
//-------------------------------------
$inputName='filedata';//表单文件域name
$attachDir='upload';//上传文件保存路径,结尾不要带/
$dirType=1;//1:按天存入目录 2:按月存入目录 3:按扩展名存目录  建议使用按天存
$maxAttachSize=2097152;//最大上传大小,默认是2M
$upExt='txt,rar,zip,jpg,jpeg,gif,png,swf,wmv,avi,wma,mp3,mid';//上传扩展名
$msgType=2;//返回上传参数的格式:1,只返回url,2,返回参数数组
$immediate=isset($_GET['immediate'])?$_GET['immediate']:0;//立即上传模式,仅为演示用
ini_set('date.timezone','Asia/Shanghai');//时区
 
$err = "";
$msg = "''";
$tempPath=$attachDir.'/'.date("YmdHis").mt_rand(10000,99999).'.tmp';
$localName='';
 
if(isset($_SERVER['HTTP_CONTENT_DISPOSITION'])&&preg_match('/attachment;s+name="(.+?)";s+filename="(.+?)"/i',$_SERVER['HTTP_CONTENT_DISPOSITION'],$info)){//HTML5上传
    file_put_contents($tempPath,file_get_contents("php://input"));
    $localName=urldecode($info[2]);
}
else{//标准表单式上传
    $upfile=@$_FILES[$inputName];
    if(!isset($upfile))$err='文件域的name错误';
    elseif(!empty($upfile['error'])){
        switch($upfile['error'])
        {
            case '1':
                $err = '文件大小超过了php.ini定义的upload_max_filesize值';
                break;
            case '2':
                $err = '文件大小超过了HTML定义的MAX_FILE_SIZE值';
                break;
            case '3':
                $err = '文件上传不完全';
                break;
            case '4':
                $err = '无文件上传';
                break;
            case '6':
                $err = '缺少临时文件夹';
                break;
            case '7':
                $err = '写文件失败';
                break;
            case '8':
                $err = '上传被其它扩展中断';
                break;
            case '999':
            default:
                $err = '无有效错误代码';
        }
    }
    elseif(empty($upfile['tmp_name']) || $upfile['tmp_name'] == 'none')$err = '无文件上传';
    else{
        move_uploaded_file($upfile['tmp_name'],$tempPath);
        $localName=$upfile['name'];
    }
}
 
if($err==''){
    $fileInfo=pathinfo($localName);
    $extension=$fileInfo['extension'];
    if(preg_match('/^('.str_replace(',','|',$upExt).')$/i',$extension))
    {
        $bytes=filesize($tempPath);
        if($bytes > $maxAttachSize)$err='请不要上传大小超过'.formatBytes($maxAttachSize).'的文件';
        else
        {
            switch($dirType)
            {
                case 1: $attachSubDir = 'day_'.date('ymd'); break;
                case 2: $attachSubDir = 'month_'.date('ym'); break;
                case 3: $attachSubDir = 'ext_'.$extension; break;
            }
            $attachDir = $attachDir.'/'.$attachSubDir;
            if(!is_dir($attachDir))
            {
                @mkdir($attachDir, 0777);
                @fclose(fopen($attachDir.'/index.htm', 'w'));
            }
            PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
            $newFilename=date("YmdHis").mt_rand(1000,9999).'.'.$extension;
            $targetPath = $attachDir.'/'.$newFilename;
             
            rename($tempPath,$targetPath);
            @chmod($targetPath,0755);
            $targetPath=jsonString($targetPath);
            if($immediate=='1')$targetPath='!'.$targetPath;
            if($msgType==1)$msg="'$targetPath'";
             
            else $msg="{'url':'".$dir_url_http.$targetPath."','localname':'".jsonString($localName)."','id':'1'}";//id参数固定不变,仅供演示,实际项目中可以是数据库ID
        }
    }
    else $err='上传文件扩展名必需为:'.$upExt;
 
    @unlink($tempPath);
}
 
echo "{'err':'".jsonString($err)."','msg':".$msg."}";
 
 
function jsonString($str)
{
    return preg_replace("/([\\/'])/",'\$1',$str);
}
function formatBytes($bytes) {
    if($bytes >= 1073741824) {
        $bytes = round($bytes / 1073741824 * 100) / 100 . 'GB';
    } elseif($bytes >= 1048576) {
        $bytes = round($bytes / 1048576 * 100) / 100 . 'MB';
    } elseif($bytes >= 1024) {
        $bytes = round($bytes / 1024 * 100) / 100 . 'KB';
    } else {
        $bytes = $bytes . 'Bytes';
    }
    return $bytes;
}
?>
登录后复制
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号