Html文本编辑器图片上传的本地操作

本文深入探讨了前端开发的关键技术,包括HTML、CSS、JavaScript等,并通过实例展示了如何运用这些技术进行实际项目开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视图页面

<div class="unit" style="padding-bottom:20px" >
                <label style="width:80px">详情:</label>
                <textarea class="editor"  id="content" rows="34" cols="90" name="content" ></textarea>
</div>

<script type="text/javascript">
$('#content').xheditor({upLinkUrl:"/admin/admin_news/uploads/n1",upLinkExt:"zip,rar,txt",
upImgUrl:"/admin/admin_news/uploads/ns1",upImgExt:"jpg,jpeg,gif,png",
upFlashUrl:"/admin/admin_news/uploads/n1",upFlashExt:"swf",
upMediaUrl:"/admin/admin_news/uploads/n1",upMediaExt:"avi"});
</script>

控制器

function uploads($news_id){
        require_once($_SERVER['DOCUMENT_ROOT'].'/data/class.filter.php');
        if($news_id){
             $filter = new Filter($_POST);
            $upload = $filter->files('filedata', '.jpg.png');
            if ($filter->has_error()) //上传出错
            {
                $result['err'] = $filter->get_error();
            }else{
                define('MAX_SIZE',10000000);//最大为20M
                $name   = $upload['name'];     // 被上传文件的名称
                $name_1 = explode('.',$name);
                $dir    = 'uploads/content/news/'.time().'.'.$name_1[1];
                if($upload['size']>MAX_SIZE){
                  $result['err'] = "上传文件过大!" ;
                }else{
                  if(move_uploaded_file($upload['tmp'],$dir)){
                       $msg = "/".$dir;
                      $result = array('err'=>"",'msg'=>$msg);
                  }else{
                      $result['err'] = '上传文件复制失败,请稍候重试'; 
                  }
               }
            }
        }else{
           $result['err'] = '上传文件失败,缺少数据';    
        }
      echo json_encode($result);
    }

所需要文件 class.filter.php

<?php
/**
 * Filter Class
 *
 * tidy, high-performance, smart, innovative ^_^
 *
 * @version:  1.0
 * @author:   james zhang (james.zhang@9.cn)
 * @license:  LGPL
 *
 */
class Filter
{
    private $arr; // GET/POST variables
    private $val; // current variable
    private $def; // filter setting
    private $err; // wrong message

    private $quotes;  // get_magic_quotes_gpc()
    private $vdcode;  // validated code name

    /**
     * construct class
     */
    function __construct($source, $fields = array())
    {
        $this->arr  = $source;
        $this->val  = null;
        $this->def  = $fields;
        $this->err  = '';
        $this->quotes = get_magic_quotes_gpc();
        $this->vdcode = 'VC4';
    }

    /**
     * filter value
     */
    public function variables($fields = array())
    {
        $result = array();
        if (!empty($fields)) {
            $this->def = $fields;
        }
        if (empty($this->arr)) {
            $this->err = '未发现可用的数据。';
        }
        else {// 'username' => '用户名|require/optional|null|len_between(2,12)|用户名称填写错误|group'
            foreach ($this->def as $field => $str) {
                $arr = explode('|', $str);
                if (isset($arr[4])) {
                    if (!isset($this->arr[$field]) || $this->arr[$field] == '') {
                        if ($arr[1] == 'require') {
                            $this->err = '“'.$arr[0].'”未提供,不能继续处理。';
                            break;
                        }
                        else {
                            if (isset($arr[5]) && !empty($arr[5])) {
                                $result[$arr[5]][$field] = $arr[2] == 'null' ? '' : $arr[2];
                            } else {
                                $result[$field] = $arr[2] == 'null' ? '' : $arr[2];
                            }
                        }
                    }
                    else {
                        $this->val = $this->arr[$field];
                        $fun = explode('&&', $arr[3]);
                        foreach ($fun as $str) {
                            //bool method_exists ( object $object , string $method_name )
                            $valid = false;
                            eval("\$valid=\$this->$str;");
                            if ($valid) {
                                if (isset($arr[5]) && !empty($arr[5])) {
                                    $result[$arr[5]][$field] = $this->val;
                                } else {
                                    $result[$field] = $this->val;
                                }
                            } else {
                                $this->err = '“'.$arr[0].'”'.$arr[4];
                                break 2;
                            }
                        }
                    }
                }
                else {
                    $this->err = '“'.$arr[0].'”无法判断是否正确,设置错误。';
                    break;
                }
            }
        }
        return $result;
    }

    /**
     * filter value
     */
    public function files($field, $exts, $multi = false)
    {
        $result = array();
        if (isset($_FILES[$field])) {
            if ($multi && is_array($_FILES[$field]['name'])) {
                foreach ($_FILES[$field]['name'] as $i => $name) {
                    if (!empty($name)) {//skip null field
                        $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
                        if (false === strpos($exts, $ext) || !is_uploaded_file($_FILES[$field]['tmp_name'][$i]) || $_FILES[$field]['error'][$i] != UPLOAD_ERR_OK) {
                            $this->err = '文件['.$name.']上传出错,请检查后重试。';
                            break;
                        }
                        $result[] = array('name' => basename($name), 'ext' => $ext, 'size' => $_FILES[$field]['size'][$i], 'tmp' => $_FILES[$field]['tmp_name'][$i]);
                    }
                }
            }else if (!empty($_FILES[$field])) {
                $ext = strtolower(pathinfo($_FILES[$field]['name'], PATHINFO_EXTENSION));
                
                if (false === strpos($exts, $ext) || !is_uploaded_file($_FILES[$field]['tmp_name']) || $_FILES[$field]['error'] != UPLOAD_ERR_OK) {
                    $this->err = '文件['.$name.']上传出错,请检查后重试。';
                } else {
                    $result = array('name' => basename($_FILES[$field]['name']), 'ext' => $ext, 'size' => $_FILES[$field]['size'], 'tmp' => $_FILES[$field]['tmp_name']);
                }
            }
        } else {
            $this->err = '未发现指定的上传文件。';
        }
        return $result;
    }

    /**
     * return true/false if error
     */
    public function has_error()
    {
        return $this->err != '';
    }

    /**
     * return error message
     */
    public function get_error()
    {
        return $this->err;
    }


    /**
     * check string value
     */
    private function str_escape($str)
    {
        $str = trim($str);
        if (!$this->quotes) {
            $str = addslashes($str);
        }
        return $str;
    }

    /**
     * return string length
     */
    private function str_length($str)
    {
        $len = 0;
        if (function_exists('mb_strlen')) {
            $len = mb_strlen($str);
        }
        else if (function_exists('iconv_strlen')) {
            $len = iconv_strlen($str);
        }
        else {
            $len = strlen($str);
        }
        return $len;
    }

    /**
     * return false/true
     */
    private function str_min($num)
    {
        $str = $this->str_escape($this->val);
        $len = $this->str_length($str);
        return $len >= $num;
    }

    /**
     * return false/true
     */
    private function str_max($num)
    {
        $str = $this->str_escape($this->val);
        $len = $this->str_length($str);
        return $len <= $num;
    }

    /**
     * return false/true
     */
    private function str_between($min, $max)
    {
        $str = $this->str_escape($this->val);
        $len = $this->str_length($str);
        return $len >= $min && $len <= $max;
    }

    /**
     * return false/true
     */
    private function str_iscode()
    {
        return isset($_SESSION[$this->vdcode]) && $_SESSION[$this->vdcode] == strtolower($this->val);
    }

    /**
     * return false/true
     */
    private function str_equal($s1, $s2, $case = true)
    {
        if ($case) {
            return 0 == strcmp($s1, $s2);
        }
        else {
            return 0 == strcasecmp($s1, $s2);
        }
    }

    /**
     * return false/true
     */
    private function val_min($min)
    {
        $val = trim($this->val);
        if ($this->is_number($val)) {
            return $val >= $min;
        } else {
            return false;
        }
    }

    /**
     * return false/true
     */
    private function val_max($max)
    {
        $val = trim($this->val);
        if ($this->is_number($val)) {
            return $val <= $max;
        } else {
            return false;
        }
    }

    /**
     * return false/true
     */
    private function val_between($min, $max)
    {
        $val = trim($this->val);
        if ($this->is_number($val)) {
            return $val >= $min && $val <= $max;
        } else {
            return false;
        }
    }

    /**
     * return false/true
     */
    private function val_in()
    {
        $val = trim($this->val);
        $cnt = func_num_args();
        if ($this->is_number($val) && $cnt >= 1) {
            $arr = func_get_args();
            return in_array($val, $arr);
        } else {
            return false;
        }
    }

    /**
     * return false/true
     */
    private function is_number($val)
    {
        return is_numeric($val);
    }

    /**
     * return false/true
     */
    private function is_email() {
        $str = $this->str_escape($this->val);
        return preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", $str);
    }

    /**
     * return false/true
     */
    private function is_url() {
        $str = $this->str_escape($this->val);
        return preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"])*$/", $str);
    }

    /**
     * return false/true
     */
    private function is_date() {
        $str = $this->str_escape($this->val);
        return preg_match("/^(19|20)\d{2}\-[0-1]\d{1}\-[0-3]\d{1}$/", $str);
    }

    /**
     * return false/true
     */
    private function is_zip() {
        $str = $this->str_escape($this->val);
        return preg_match("/^[1-9]\d{5}$/", $str);
    }

    /**
     * return false/true
     */
    private function is_idcard() {
        $str = $this->str_escape($this->val);
        return preg_match("/^\d{15}(\d{2}[A-Za-z0-9])?$/", $str);
    }

    /**
     * return false/true
     */
    private function is_chinese() {
        $str = $this->str_escape($this->val);
        return ereg("^[".chr(0xa1)."-".chr(0xff)."]+$", $str);
    }

    /**
     * return false/true
     */
    private function is_english() {
        $str = $this->str_escape($this->val);
        return preg_match("/^[A-Za-z]+$/", $str);
    }

}


转载于:https://my.oschina.net/meng527/blog/330544

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值