add data import page
This commit is contained in:
parent
b1253df618
commit
3cda4c0b7b
|
@ -7,6 +7,7 @@ use Helpers\dbh;
|
||||||
use \Files\Files;
|
use \Files\Files;
|
||||||
use Westdc\Visual;
|
use Westdc\Visual;
|
||||||
use Westdc\Metadata;
|
use Westdc\Metadata;
|
||||||
|
use Westdc\Dataimport;
|
||||||
|
|
||||||
class Admin_DataController extends Zend_Controller_Action
|
class Admin_DataController extends Zend_Controller_Action
|
||||||
{
|
{
|
||||||
|
@ -1584,7 +1585,7 @@ class Admin_DataController extends Zend_Controller_Action
|
||||||
/*
|
/*
|
||||||
* 导入本地元数据
|
* 导入本地元数据
|
||||||
*/
|
*/
|
||||||
function importAction()
|
function Gction()
|
||||||
{
|
{
|
||||||
$md=new MetadataTable();
|
$md=new MetadataTable();
|
||||||
$thumb=new ThumbnailTable();
|
$thumb=new ThumbnailTable();
|
||||||
|
@ -4143,6 +4144,46 @@ class Admin_DataController extends Zend_Controller_Action
|
||||||
view::addPaginator($visual->getVisualMetadata(),$this,10);
|
view::addPaginator($visual->getVisualMetadata(),$this,10);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 數據導入
|
||||||
|
*/
|
||||||
|
public function dataimportAction()
|
||||||
|
{
|
||||||
|
$this->view->ac = $ac = $this->_getParam('ac');
|
||||||
|
|
||||||
|
//文件上傳
|
||||||
|
if($ac == "upload") {
|
||||||
|
$upload = new Dataimport\Upload;
|
||||||
|
$file = $upload($_FILES['FileData']);
|
||||||
|
|
||||||
|
$this->_helper->json($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
//預處理
|
||||||
|
//判斷文件類型,初步識別文件內容
|
||||||
|
if($ac == "preprocess"){
|
||||||
|
$this->_helper->viewRenderer('dataimport-preprocess');
|
||||||
|
|
||||||
|
$file = $this->_getParam('file');
|
||||||
|
|
||||||
|
if(empty($file))
|
||||||
|
$this->view->error = "参数错误";
|
||||||
|
|
||||||
|
if(!file_exists($file))
|
||||||
|
$this->view->error = "要导入的文件已不存在,请返回上一步重新上传";
|
||||||
|
|
||||||
|
if(isset($this->view->error))
|
||||||
|
return;
|
||||||
|
|
||||||
|
$this->view->file = $file;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}//dataimportAction()
|
||||||
|
|
||||||
public function doiAction()
|
public function doiAction()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?php
|
||||||
|
$this->headTitle($this->config->title->site);
|
||||||
|
$this->headTitle('后台管理');
|
||||||
|
$this->headTitle()->setSeparator(' - ');
|
||||||
|
?>
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span2">
|
||||||
|
<?= $this->partial('data/left.phtml'); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="span10">
|
||||||
|
<h3>數據導入<small>文件預處理</small></h3>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
處理文件:<?= $this->file ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,90 @@
|
||||||
|
<?php
|
||||||
|
$this->headTitle($this->config->title->site);
|
||||||
|
$this->headTitle('后台管理');
|
||||||
|
$this->headTitle()->setSeparator(' - ');
|
||||||
|
$theme = new Theme;
|
||||||
|
$theme->AppendPlus($this,"jquery-fileupload");
|
||||||
|
?>
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span2">
|
||||||
|
<?= $this->partial('data/left.phtml'); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="span10">
|
||||||
|
<h3>數據導入</h3>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<label>上傳文件,請選擇Excel文件進行上傳</label>
|
||||||
|
|
||||||
|
<span class="btn btn-success fileinput-button file-upload-ctls">上傳文件<input id="fileupload" type="file" name="FileData"></span>
|
||||||
|
<div class="progress" id="pdf-upload-progress" style="display: none;">
|
||||||
|
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="uploadedFile"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var jqXHR = $('#fileupload').fileupload({
|
||||||
|
url: '/admin/data/dataimport/ac/upload',
|
||||||
|
dataType: 'json',
|
||||||
|
done: function (e, data) {
|
||||||
|
|
||||||
|
if(typeof(data.result.error) != 'undefined' && data.result.error != 0)
|
||||||
|
{
|
||||||
|
alert(data.result.error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($('#uploadedFile').html() == "")
|
||||||
|
$('#uploadedFile').html(upload.makeFileHtml(data.result));
|
||||||
|
else
|
||||||
|
$('#uploadedFile').append(upload.makeFileHtml(data.result));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
},
|
||||||
|
stop : function (e) {
|
||||||
|
$('#pdf-upload-progress').hide();
|
||||||
|
$('.file-upload-ctls').show();
|
||||||
|
},//stop
|
||||||
|
start : function (e) {
|
||||||
|
$('.file-upload-ctls').hide();
|
||||||
|
$('#pdf-upload-progress .progress-bar').css('width', 0 + '%');
|
||||||
|
$('#pdf-upload-progress').show();
|
||||||
|
},//start
|
||||||
|
progressall: function (e, data) {
|
||||||
|
var progress = parseInt(data.loaded / data.total * 100, 10);
|
||||||
|
$('#pdf-upload-progress .progress-bar').css(
|
||||||
|
'width',
|
||||||
|
progress + '%'
|
||||||
|
);
|
||||||
|
},//progressall
|
||||||
|
add: function (e, data) {
|
||||||
|
if($('input[name=attid]').length >= 1)
|
||||||
|
{
|
||||||
|
upload.deleteFile($('input[name=attid]').val());
|
||||||
|
$('file-alert').alert('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
data.process().done(function () {
|
||||||
|
data.submit();
|
||||||
|
});
|
||||||
|
}//add
|
||||||
|
}).prop('disabled', !$.support.fileInput)
|
||||||
|
.parent().addClass($.support.fileInput ? undefined : 'disabled');
|
||||||
|
});
|
||||||
|
|
||||||
|
var upload = {
|
||||||
|
makeFileHtml : function(data){
|
||||||
|
return '<div class="alert alert-success">'
|
||||||
|
+ data.file
|
||||||
|
+ ' <a href="/admin/data/dataimport/ac/preprocess/?file='+ encodeURI(data.file) +'">導入數據</a>'
|
||||||
|
+ "</div>";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -1,16 +1,17 @@
|
||||||
<div class="well" style="padding:8px 0">
|
<div class="well" style="padding:8px 0">
|
||||||
<ul class="nav nav-list">
|
<ul class="nav nav-list">
|
||||||
<li class="nav-header"><h4>数据管理</h4></li>
|
<li class="nav-header"><h4>数据管理</h4></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="/admin/data/">元数据概况</a></li>
|
<li><a href="/admin/data/">元数据概况</a></li>
|
||||||
<li><a href="/admin/data/md">元数据管理</a></li>
|
<li><a href="/admin/data/md">元数据管理</a></li>
|
||||||
<li><a href="/admin/data/newdata">新建元数据</a></li>
|
<li><a href="/admin/data/newdata">新建元数据</a></li>
|
||||||
<li><a href="/admin/data/author">数据作者管理</a></li>
|
<li><a href="/admin/data/author">数据作者管理</a></li>
|
||||||
<li><a href="/admin/data/version">数据版本管理</a></li>
|
<li><a href="/admin/data/version">数据版本管理</a></li>
|
||||||
<li><a href="/admin/data/comment">数据反馈管理</a></li>
|
<li><a href="/admin/data/comment">数据反馈管理</a></li>
|
||||||
<li><a href="/admin/data/attachments">数据附件管理</a></li>
|
<li><a href="/admin/data/attachments">数据附件管理</a></li>
|
||||||
<li><a href="/admin/data/source">专题管理</a></li>
|
<li><a href="/admin/data/source">专题管理</a></li>
|
||||||
<li><a href="/admin/data/visual">数据可视化</a></li>
|
<li><a href="/admin/data/doi">DOI注册</a></li>
|
||||||
<li><a href="/admin/data/doi">DOI注册</a></li>
|
<li><a href="/admin/data/visual">数据可视化</a></li>
|
||||||
|
<li><a href="/admin/data/dataimport">数据导入</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
|
@ -143,6 +143,17 @@ class Theme
|
||||||
'/js/lib/highcharts/highcharts-more.js'
|
'/js/lib/highcharts/highcharts-more.js'
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
|
'jquery-fileupload' => array(
|
||||||
|
$this->ScriptKey => array(
|
||||||
|
'/js/lib/jquery.fileupload/vendor/jquery.ui.widget.js',
|
||||||
|
'/js/lib/jquery.fileupload/jquery.iframe-transport.js',
|
||||||
|
'/js/lib/jquery.fileupload/jquery.fileupload.js',
|
||||||
|
),
|
||||||
|
$this->CSSKey => array(
|
||||||
|
'/js/lib/jquery.fileupload/css/jquery.fileupload.css',
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
/*********谷歌地图*********/
|
/*********谷歌地图*********/
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
<?php
|
||||||
|
namespace Westdc\Dataimport;
|
||||||
|
|
||||||
|
class Upload{
|
||||||
|
|
||||||
|
private $config;
|
||||||
|
|
||||||
|
function __construct($db = NULL)
|
||||||
|
{
|
||||||
|
$this->config = \Zend_Registry::get('config');
|
||||||
|
}
|
||||||
|
|
||||||
|
//上传數據
|
||||||
|
public function __invoke($file)
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
if (empty($file) !== false) {
|
||||||
|
return array("error"=>"请选择要上传的文件");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (@is_uploaded_file($file['tmp_name']) === false) {
|
||||||
|
return array("error"=>"文件上传失败,请重新上传");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($file['size'] > 20 * 1024 * 1024)
|
||||||
|
{
|
||||||
|
return array('error'=>"文件大小超出限制");
|
||||||
|
}
|
||||||
|
|
||||||
|
$ext = $this->getFileTextExt($file['name']);
|
||||||
|
$filename = $this->gen_uuid().".".$ext;
|
||||||
|
|
||||||
|
if(!preg_match("/(\\/|\\\)$/",$this->config->dataimport->path))
|
||||||
|
$save_path = $this->config->dataimport->path . DIRECTORY_SEPARATOR;
|
||||||
|
else
|
||||||
|
$save_path = $this->config->dataimport->path;
|
||||||
|
|
||||||
|
$new_filepath = $save_path.$filename;
|
||||||
|
|
||||||
|
if (move_uploaded_file($file['tmp_name'], $new_filepath) === false) {
|
||||||
|
return array("error"=>"上传失败,请重试");
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
"success" => 1,
|
||||||
|
"file"=>$new_filepath
|
||||||
|
);
|
||||||
|
|
||||||
|
}catch(Exception $e)
|
||||||
|
{
|
||||||
|
return array("error"=>$e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取文件扩展名
|
||||||
|
public function getFileTextExt($file_name)
|
||||||
|
{
|
||||||
|
$temp_arr = explode(".", $file_name);
|
||||||
|
$file_ext = array_pop($temp_arr);
|
||||||
|
$file_ext = trim($file_ext);
|
||||||
|
$file_ext = strtolower($file_ext);
|
||||||
|
return $file_ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取文件Mime,通过finfo扩展
|
||||||
|
public function getFileMime($file_name)
|
||||||
|
{
|
||||||
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
||||||
|
$filetype = finfo_file($finfo, $file_name) ; //文件mime类型
|
||||||
|
finfo_close($finfo);
|
||||||
|
return $filetype;
|
||||||
|
}
|
||||||
|
|
||||||
|
//文件名uuid
|
||||||
|
public function gen_uuid() {
|
||||||
|
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||||
|
// 32 bits for "time_low"
|
||||||
|
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
|
||||||
|
|
||||||
|
// 16 bits for "time_mid"
|
||||||
|
mt_rand( 0, 0xffff ),
|
||||||
|
|
||||||
|
// 16 bits for "time_hi_and_version",
|
||||||
|
// four most significant bits holds version number 4
|
||||||
|
mt_rand( 0, 0x0fff ) | 0x4000,
|
||||||
|
|
||||||
|
// 16 bits, 8 bits for "clk_seq_hi_res",
|
||||||
|
// 8 bits for "clk_seq_low",
|
||||||
|
// two most significant bits holds zero and one for variant DCE1.1
|
||||||
|
mt_rand( 0, 0x3fff ) | 0x8000,
|
||||||
|
|
||||||
|
// 48 bits for "node"
|
||||||
|
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue