<?php
|
|
namespace Api\Controller;
|
|
use Think\Controller;
|
|
class ImportController extends BaseController {
|
|
|
|
|
|
//自动检测导入的文件类型从而选择不同的控制器方法
|
|
public function auto(){
|
|
set_time_limit(100);
|
|
ini_set('memory_limit','200M');
|
|
$login_user = $this->checkLogin();
|
|
$filename = $_FILES["file"]["name"] ;
|
|
$file = $_FILES["file"]["tmp_name"] ;
|
|
//文件后缀
|
|
$tail = substr(strrchr($filename, '.'), 1);
|
|
|
|
if ($tail == 'zip') {
|
|
$zipArc = new \ZipArchive();
|
|
$ret = $zipArc->open($file, \ZipArchive::CREATE);
|
|
$info = $zipArc->getFromName("prefix_info.json") ;
|
|
if ($info) {
|
|
$info_array = json_decode($info ,1 );
|
|
if ($info_array) {
|
|
$this->markdown($info_array);
|
|
return ;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($tail == 'json') {
|
|
$json = file_get_contents($file) ;
|
|
$json_array = json_decode($json ,1 );
|
|
unset($json);
|
|
if (( $json_array['swagger'] || $json_array['openapi'] ) && $json_array['info']) {
|
|
R("ImportSwagger/import");
|
|
return ;
|
|
}
|
|
if ($json_array['id']) {
|
|
R("ImportPostman/import");
|
|
return ;
|
|
}
|
|
if ($json_array['info']) {
|
|
R("ImportPostman/import");
|
|
return ;
|
|
}
|
|
}
|
|
|
|
$this->sendError(10101);
|
|
|
|
|
|
}
|
|
|
|
//导入markdown压缩包
|
|
public function markdown($info_array){
|
|
set_time_limit(100);
|
|
ini_set('memory_limit','200M');
|
|
|
|
$login_user = $this->checkLogin();
|
|
|
|
$file = $_FILES["file"]["tmp_name"] ;
|
|
//$file = "../Public/markdown.zip" ; //test
|
|
|
|
if (!$info_array) {
|
|
$zipArc = new \ZipArchive();
|
|
$ret = $zipArc->open($file, \ZipArchive::CREATE);
|
|
$info = $zipArc->getFromName("prefix_info.json") ;
|
|
$info_array = json_decode($info ,1 );
|
|
unset($info);
|
|
}
|
|
|
|
if ($info_array) {
|
|
|
|
//$info_array = $this->_fileToMarkdown($info_array, $zipArc );
|
|
//echo json_encode($info_array);return ;
|
|
D("Item")->import( json_encode($info_array) , $login_user['uid'] );
|
|
$this->sendResult(array());
|
|
return ;
|
|
}
|
|
|
|
$this->sendError(10101);
|
|
}
|
|
|
|
//废弃
|
|
private function _fileToMarkdown( $catalogData , $zipArc ){
|
|
if ($catalogData['pages']) {
|
|
foreach ($catalogData['pages'] as $key => $value) {
|
|
if ($value['page_content']) {
|
|
$catalogData['pages'][$key]['page_content'] = $zipArc->getFromName( $value['page_content']) ;//原来的内容由文件名变为文件内容
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($catalogData['catalogs']) {
|
|
foreach ($catalogData['catalogs'] as $key => $value) {
|
|
if ($value) {
|
|
$catalogData['catalogs'][$key] = $this->_markdownTofile($value , $zipArc);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
return $catalogData ;
|
|
|
|
}
|
|
|
|
}
|