一般情况下,tinyMCE的image的图像上传功能接收来自服务器返回的json字符串,然后解析成图片链接引入编辑器。
但是,在开发过程中, 由于tp处于debug模式, 返回的数据会附带上调试的html, js代码,从而导致因该返回的json字符串解析失败,错误信息如下:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
所以,返回json字符串后,应该立即调用exit就可避免这样的问题出现。
示例(最后一行):
public function saveImg()
{
//专为tinyMCE的图片上传函数,参照tinyMCE手册改写
//http://tinymce.ax-z.cn/advanced/php-upload-handler.php
reset($_FILES);
$temp = current($_FILES);
// dump($temp);
// $file = $temp['tmp_name'];
// $fileName = $temp['name'];
// dump($file);
// dump($fileName);
// $Msg = serialize($temp);
// header("HTTP/1.1 500 $Msg");
// dump()
// $file = Request::file("temp_name");
// dump($file);
// $fileName = $file->getOriginalName();
// dump($fileName);
if (!is_uploaded_file($temp['tmp_name'])) {
header("HTTP/1.1 500 Server Error");
exit;
}
// 简单的过滤一下文件名是否合格
// if (preg_match("/([^\w\s\d\-_~,;:\[\]\(\).])|([\.]{2,})/", $temp['name])) {
// header("HTTP/1.1 400 Invalid file name.");
// exit;
// }
// 验证扩展名
// if (!in_array(strtolower(pathinfo($fileName, PATHINFO_EXTENSION)), array("gif", "jpg", "png", "jpeg"))) {
// header("HTTP/1.1 400 Invalid extension.");
// exit;
// }
// dump($file->getPathname());
// $file = fopen($file->getPathname());
// dump($temp['tmp_name']);
// $file = fopen($temp['tmp_name'], 'r');
$file = new File($temp['tmp_name']);
$info = Filesystem::disk('img')->putFile('', $file, 'md5');
$info = '/storage/img/' . $info;
echo json_encode(array('location' => $info));
exit;
}