最近开发一个数据备份恢复的功能,该项目基于PHP+Mysql+Apache的架构,因此这个功能用easyui-filebox+ajax+PHP实现。
1.首先HTML部分:
<form id="importFileForm" method="post" enctype="multipart/form-data">
<div style="margin-bottom:20px">
<div>选择Tar包:</div>
<input id="fileupload" class="easyui-filebox" name="mypic" data-options="prompt:'Choose file...'"
style="width:100%">
</div>
<div>
<a href="#" class="easyui-linkbutton" onclick="importFileAndRestore()"
style="width:100%">RestoreBackup</a>
</div>
<div><label id="fileName"></label></div>
<div><label id="uploadInfo"></label></div>
</form>
部分:
function importFileAndRestore() {
var file = ('filebox_file_id_1').files[0];
if (file == null) {
alert('错误,请选择文件');
return;
}
var fileName = ;
var file_typename = (('.'), );
if (file_typename == '.gz') {
var fileSize = 0;
if ( > 1024 * 1024) {
fileSize = Math.round( * 100 / (1024 * 1024)) / 100;
if (fileSize > 100) {
alert('错误,文件超过100MB,禁止上传!');
return;
}
fileSize = () + 'MB';
}
else {
fileSize = (Math.round( * 100 / 1024) / 100).toString() + 'KB';
}
var formData = new FormData($("#importFileForm")[0]);
$.ajax({
url: '../../php/upload_backup.php',
type: 'POST',
data: formData,
dataType: 'json',
async: false,
cache: false,
contentType:
,
processData: false,
success: function (data) {
('fileupload').value = null;
if (parseInt(data) == 0) {
alert("你选择的文件格式不正确!");
$('#upload_win').window('close');
} else if (parseInt(data) == 1) {
alert("文件上传失败!");
$('#upload_win').window('close');
} else {
for (var p in data) {
for (var pp in data[p]) {
var table_name = (('.'))[0];
var clear_table = {
action: "clear" + table_name
};
$.ajax({
url: '../../php/',
type: "POST",
dataType: 'json',
data: {
strRequest: JSON.stringify(clear_table)
},
success: function (obj) {
}
})
var restore_table = {
action: "add" + table_name,
data: JSON.parse(data[p][pp])
};
$.ajax({
url: '../../php/',
type: "POST",
dataType: 'json',
data: {
strRequest: JSON.stringify(restore_table)
},
success: function (obj) {
}
})
}
}
alert("恢复备份成功!");
$('#upload_win').window('close');
}
},
error: function (returnInfo) {
('uploadInfo').innerHTML = "<span style='color:Red'>" + returnInfo + "</span>";
}
});
}
else {
('fileName').innerHTML = "<span style='color:Red'>错误提示:上传文件应该是.后缀而不应该是" + file_typename + ",请重新选择文件</span>"
}
}
部分:
<?php
$picname = $_FILES['mypic']['name'];
if ($picname != "") {
$pic_path = "/var/www/html/upload/". $picname;
if(move_uploaded_file($_FILES['mypic']['tmp_name'], $pic_path)){
shell_exec('cd /var/www/html/upload;tar zxvf '.$picname);
$files_josn=shell_exec("cd /var/www/html/upload/backup;ls *.json");
$files_nameArray=array();
$token = strtok($files_josn, "\n");
while ($token != false)
{
array_push($files_nameArray, $token);
$token = strtok("\n");
}
$contents=array();
for($i=0;$i<count($files_nameArray);$i++){
$temp=$files_nameArray[$i];
$content=array();
$content[$temp]=file_get_contents("/var/www/html/upload/backup/".$files_nameArray[$i]);
array_push($contents,$content);
}
echo json_encode($contents);
}else{
echo 1;
}
}
?>