mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
init project
This commit is contained in:
54
public/editormd/examples/php/cross-domain-upload.php
Normal file
54
public/editormd/examples/php/cross-domain-upload.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* PHP cross-domain upload demo for Editor.md
|
||||
*
|
||||
* @FileName: upload.php
|
||||
* @Auther: Pandao
|
||||
* @E-mail: pandao@vip.qq.com
|
||||
* @CreateTime: 2015-02-15 19:12:11
|
||||
* @UpdateTime: 2015-02-15 20:47:52
|
||||
* Copyright@2015 Editor.md all right reserved.
|
||||
*/
|
||||
|
||||
header("Content-Type:text/html; charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
require("editormd.uploader.class.php");
|
||||
|
||||
error_reporting(E_ALL & ~E_NOTICE);
|
||||
|
||||
$path = __DIR__ . DIRECTORY_SEPARATOR;
|
||||
$url = dirname($_SERVER['PHP_SELF']) . '/';
|
||||
$savePath = realpath($path . '../uploads/') . DIRECTORY_SEPARATOR;
|
||||
$saveURL = '//'. $_SERVER['SERVER_NAME'] . $url . '../uploads/'; // 本例是演示跨域上传所以加上$_SERVER['SERVER_NAME']
|
||||
|
||||
$formats = array(
|
||||
'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp')
|
||||
);
|
||||
|
||||
$name = 'editormd-image-file'; // file input name
|
||||
$callbackUrl = $_GET['callback'];
|
||||
|
||||
if (isset($_FILES[$name]))
|
||||
{
|
||||
$imageUploader = new EditorMdUploader($savePath, $saveURL, $formats['image'], false); // Ymdhis表示按日期生成文件名,利用date()函数
|
||||
|
||||
$imageUploader->config(array(
|
||||
'maxSize' => 1024, // 允许上传的最大文件大小,以KB为单位,默认值为1024
|
||||
'cover' => true // 是否覆盖同名文件,默认为true
|
||||
));
|
||||
|
||||
$imageUploader->redirect = true;
|
||||
$imageUploader->redirectURL = $callbackUrl . (empty(parse_url($callbackUrl)['query']) ? '?' : '&') . 'dialog_id=' . $_GET['dialog_id'] . '&temp=' . date('ymdhis');
|
||||
|
||||
if ($imageUploader->upload($name))
|
||||
{
|
||||
$imageUploader->message('上传成功!', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$imageUploader->message('上传失败!', 0);
|
||||
}
|
||||
}
|
||||
?>
|
||||
341
public/editormd/examples/php/editormd.uploader.class.php
Normal file
341
public/editormd/examples/php/editormd.uploader.class.php
Normal file
@@ -0,0 +1,341 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* Editor.md PHP简易上传类(仅供演示用,生产环境使用还需谨慎考虑)
|
||||
*
|
||||
* @FileName: editormd.uploader.class.php
|
||||
* @Auther: Pandao
|
||||
* @E-mail: pandao@vip.qq.com
|
||||
* @CreateTime: 2015-02-13 23:31:32
|
||||
* @UpdateTime: 2015-06-02 15:36:23
|
||||
* Copyright@2015 Editor.md all right reserved.
|
||||
*/
|
||||
|
||||
class EditorMdUploader
|
||||
{
|
||||
public $files; // $_FILES数组
|
||||
public $fileExit; // 文件扩展名
|
||||
public $saveName; // 最终保存的文件名
|
||||
public $saveURL; // 最终保存URL地址
|
||||
public $savePath; // 保存本地文件路径
|
||||
public $randomLength = ''; // 生成随机文件名的长度,当为日期时为日期的格式
|
||||
public $randomNameType = 1; // 生成随机的形式, NULL为保留原文件名, 1生成随机字符串, 2生成日期文件名
|
||||
public $formats = array( // 允许上传的文件格式
|
||||
'gif', 'jpg', 'jpeg', 'png', 'bmp'
|
||||
);
|
||||
public $maxSize = 1024; // 最大上传文件大小,单位KB
|
||||
public $cover = true; // 是否覆盖同名文件, 1覆盖,0不覆盖
|
||||
public $redirect = false; // 是否进行URL跳转
|
||||
public $redirectURL = ""; // 上传成功或出错后要转到的URL
|
||||
public $errors = array( // 错误信息
|
||||
'empty' => '上传文件不能为空',
|
||||
'format' =>'上传的文件格式不符合规定',
|
||||
'maxsize' => '上传的文件太大',
|
||||
'unwritable' => '保存目录不可写,请更改权限',
|
||||
'not_exist' => '保存目录不存在',
|
||||
'same_file' => '已经有相同的文件存在'
|
||||
);
|
||||
|
||||
/**
|
||||
* 构造函数,初始化对象
|
||||
*
|
||||
* @access public
|
||||
* @param string $savePath 最终保存的本地路径
|
||||
* @param string $saveURL 最终保存的URL地址
|
||||
* @param string $formats 允许上传的文件格式
|
||||
* @param Number $randomNameType 是否生成随机文件名及形式
|
||||
* @param Intiger/string $randomLength 生成随机文件名字符的长度
|
||||
* @param boolean $cover 是否覆盖相同文件
|
||||
* @param Intiger $maxSize 允许最大的上传文件大小,以KB为单位
|
||||
* @return viod
|
||||
*/
|
||||
|
||||
public function __construct($savePath, $saveURL, $formats, $randomNameType = 1, $randomLength = '', $cover = true, $maxSize = 1024)
|
||||
{
|
||||
$this->savePath = $savePath;
|
||||
$this->saveURL = $saveURL;
|
||||
$this->formats = $formats;
|
||||
$this->maxSize = $maxSize;
|
||||
$this->cover = $cover;
|
||||
$this->randomNameType = $randomNameType;
|
||||
$this->randomLength = $randomLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置参数函数
|
||||
*
|
||||
* @access public
|
||||
* @param array $configs 配置项数组
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public function config($configs)
|
||||
{
|
||||
foreach($configs as $key => $value)
|
||||
{
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行文件上传
|
||||
*
|
||||
* @access public
|
||||
* @param string $name fileInput's name
|
||||
* @return boolean 返回是否上传成功的布尔值
|
||||
*/
|
||||
|
||||
public function upload($name)
|
||||
{
|
||||
if(empty($_FILES[$name]['name'])) //上传文件为空时
|
||||
{
|
||||
$this->message($this->errors['empty']);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->files = $_FILES[$name];
|
||||
|
||||
if(!file_exists($this->savePath)) //目录不存在
|
||||
{
|
||||
$this->message($this->errors['not_exist']);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!is_writable($this->savePath)) //目录不可写
|
||||
{
|
||||
$this->message($this->errors['unwritable']);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->fileExt = $this->getFileExt($this->files["name"]); //取得扩展名
|
||||
|
||||
$this->setSeveName();
|
||||
|
||||
return $this->moveFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查并移动上传文件
|
||||
*
|
||||
* @access private
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
private function moveFile()
|
||||
{
|
||||
$files = $this->files;
|
||||
|
||||
if ($this->formats != "" && !in_array($this->fileExt, $this->formats))
|
||||
{
|
||||
$formats = implode(',', $this->formats);
|
||||
$message = "您上传的文件" . $files["name"] . "是" . $this->fileExt . "格式的,系统不允许上传,您只能上传" . $formats . "格式的文件。";
|
||||
$this->message($message);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($files["size"] / 1024 > $this->maxSize)
|
||||
{
|
||||
$message = "您上传的 " . $files["name"] . ",文件大小超出了系统限定值" . $this->maxSize . " KB,不能上传。";
|
||||
$this->message($message);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->cover) //当不能覆盖时
|
||||
{
|
||||
if(file_exists($this->savePath.$this->saveName)) //有相同的文件存在
|
||||
{
|
||||
$this->message($this->saveName . $this->errors['same_file']);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!@move_uploaded_file($files["tmp_name"], iconv("utf-8", "gbk", $this->savePath . $this->saveName)))
|
||||
{
|
||||
switch($files["errors"])
|
||||
{
|
||||
case '0':
|
||||
$message = "文件上传成功";
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$message = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
|
||||
break;
|
||||
|
||||
case '2':
|
||||
$message = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
|
||||
break;
|
||||
|
||||
case '3':
|
||||
$message = "文件只有部分被上传";
|
||||
break;
|
||||
|
||||
case '4':
|
||||
$message = "没有文件被上传";
|
||||
break;
|
||||
|
||||
case '6':
|
||||
$message = "找不到临时目录";
|
||||
break;
|
||||
|
||||
case '7':
|
||||
$message = "写文件到硬盘时出错";
|
||||
break;
|
||||
|
||||
case '8':
|
||||
$message = "某个扩展停止了文件的上传";
|
||||
break;
|
||||
|
||||
case '999':
|
||||
default:
|
||||
$message = "未知错误,请检查文件是否损坏、是否超大等原因。";
|
||||
break;
|
||||
}
|
||||
|
||||
$this->message($message);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@unlink($files["tmp_name"]); //删除临时文件
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成随机文件名函数
|
||||
*
|
||||
* @access private
|
||||
* @return string $fileName 返回生成的文件名字符串
|
||||
*/
|
||||
|
||||
private function randomFileName()
|
||||
{
|
||||
if ($this->randomNameType == 1) // 生成时间格式文件名
|
||||
{
|
||||
date_default_timezone_set('PRC'); //设置时区
|
||||
|
||||
$date = date($this->randomLength);
|
||||
$fileName = $date . "_" . mt_rand(10000, 99999);
|
||||
}
|
||||
elseif ($this->randomNameType == 2) // 生成随机字符文件名
|
||||
{
|
||||
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
|
||||
$max = strlen($chars) - 1;
|
||||
mt_srand((double)microtime() * 1000000);
|
||||
|
||||
for($i = 0; $i < $this->randomLength; $i++)
|
||||
{
|
||||
$fileName .= $chars[mt_rand(0, $max)];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$fileName = '';
|
||||
}
|
||||
|
||||
return $fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组成最终保存的完整路径及文件名
|
||||
*
|
||||
* @access private
|
||||
* @return void
|
||||
*/
|
||||
|
||||
private function setSeveName()
|
||||
{
|
||||
$this->saveName = $this->randomFileName();
|
||||
|
||||
if($this->saveName == '') //如果没生成随机文件名,就保留原文件名
|
||||
{
|
||||
$this->saveName = $this->files['name'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取得保存的文件名,用于数据库存储
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
|
||||
public function getSeveName()
|
||||
{
|
||||
return $this->saveName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件后缀名函数
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
|
||||
public function getFileExt($fileName)
|
||||
{
|
||||
return trim(strtolower(substr(strrchr($fileName, '.'), 1)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传成功或出错后跳转
|
||||
*
|
||||
* @access public
|
||||
* @param array $configs 配置项数组
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public function redirect()
|
||||
{
|
||||
header('location: ' . $this->redirectURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误提示函数
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
public function message($message, $success = 0)
|
||||
{
|
||||
$array = array(
|
||||
'success' => $success
|
||||
);
|
||||
|
||||
$url = $this->saveURL . $this->saveName;
|
||||
|
||||
// 适用于跨域上传时,跳转到中介页面等
|
||||
if ($this->redirect)
|
||||
{
|
||||
$this->redirectURL .= "&success=" . $success . "&message=" . $message;
|
||||
|
||||
if ($success == 1)
|
||||
{
|
||||
$this->redirectURL .= '&url=' . $url;
|
||||
}
|
||||
|
||||
$this->redirect();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($success == 1)
|
||||
{
|
||||
$array['url'] = $url;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array['message'] = $message;
|
||||
}
|
||||
|
||||
echo json_encode($array);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
public/editormd/examples/php/post.php
Normal file
18
public/editormd/examples/php/post.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
header("Content-Type:text/html; charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
if (isset($_POST['submit'])) {
|
||||
echo "<pre>";
|
||||
echo htmlspecialchars($_POST["test-editormd-markdown-doc"]);
|
||||
|
||||
if(isset($_POST["test-editormd-html-code"])) {
|
||||
echo "<br/><br/>";
|
||||
echo htmlspecialchars($_POST["test-editormd-html-code"]);
|
||||
}
|
||||
|
||||
echo "</pre>";
|
||||
}
|
||||
|
||||
exit;
|
||||
?>
|
||||
51
public/editormd/examples/php/upload.php
Normal file
51
public/editormd/examples/php/upload.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* PHP upload demo for Editor.md
|
||||
*
|
||||
* @FileName: upload.php
|
||||
* @Auther: Pandao
|
||||
* @E-mail: pandao@vip.qq.com
|
||||
* @CreateTime: 2015-02-13 23:20:04
|
||||
* @UpdateTime: 2015-02-14 14:52:50
|
||||
* Copyright@2015 Editor.md all right reserved.
|
||||
*/
|
||||
|
||||
//header("Content-Type:application/json; charset=utf-8"); // Unsupport IE
|
||||
header("Content-Type:text/html; charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
require("editormd.uploader.class.php");
|
||||
|
||||
error_reporting(E_ALL & ~E_NOTICE);
|
||||
|
||||
$path = __DIR__ . DIRECTORY_SEPARATOR;
|
||||
$url = dirname($_SERVER['PHP_SELF']) . '/';
|
||||
$savePath = realpath($path . '../uploads/') . DIRECTORY_SEPARATOR;
|
||||
$saveURL = $url . '../uploads/';
|
||||
|
||||
$formats = array(
|
||||
'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp')
|
||||
);
|
||||
|
||||
$name = 'editormd-image-file';
|
||||
|
||||
if (isset($_FILES[$name]))
|
||||
{
|
||||
$imageUploader = new EditorMdUploader($savePath, $saveURL, $formats['image'], false); // Ymdhis表示按日期生成文件名,利用date()函数
|
||||
|
||||
$imageUploader->config(array(
|
||||
'maxSize' => 1024, // 允许上传的最大文件大小,以KB为单位,默认值为1024
|
||||
'cover' => true // 是否覆盖同名文件,默认为true
|
||||
));
|
||||
|
||||
if ($imageUploader->upload($name))
|
||||
{
|
||||
$imageUploader->message('上传成功!', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$imageUploader->message('上传失败!', 0);
|
||||
}
|
||||
}
|
||||
?>
|
||||
35
public/editormd/examples/php/upload_callback.html
Normal file
35
public/editormd/examples/php/upload_callback.html
Normal file
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
这是同域下的callback页面,本页面在iframe内,所以只要通过window.parent就能操作父窗口的元素
|
||||
-->
|
||||
<script type="text/javascript">
|
||||
var query = {};
|
||||
var urlParams = window.location.search.split('?')[1];
|
||||
urlParams = urlParams.split("&");
|
||||
|
||||
for (var i = 0; i< urlParams.length; i++)
|
||||
{
|
||||
var param = urlParams[i].split("=");
|
||||
query[param[0]] = param[1];
|
||||
}
|
||||
|
||||
var imageDialog = window.parent.document.getElementById(query['dialog_id']);
|
||||
|
||||
if (parseInt(query['success']) === 1)
|
||||
{
|
||||
imageDialog.querySelector("[data-url]").value = query['url'];
|
||||
}
|
||||
else
|
||||
{
|
||||
alert(query['message']);
|
||||
}
|
||||
|
||||
location.href = "about:blank";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user