视图页面
<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);
}
}