jQuery easyui-filebox+ajax+PHP实现文件上传并恢复备份
来源:互联网 发布:扫码抵扣软件 编辑:程序博客网 时间:2024/06/07 04:41
最近开发一个数据备份恢复的功能,该项目基于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>
2.js部分:
//上传并恢复备份function importFileAndRestore() { //获取上传文件控件内容。根据实际情况,easyui-filebox把DOC打乱了,生成filebox_file_id_X这个id标记要上传的文件,此控件可以上传多个文件,因此一个file,X值为1;两个X值为1,2;以此类推; var file = document.getElementById('filebox_file_id_1').files[0]; //判断控件中是否存在文件内容,如果不存在,弹出提示信息,阻止进一步操作 if (file == null) { alert('错误,请选择文件'); return; } //获取文件名称 var fileName = file.name; //获取文件类型名称 var file_typename = fileName.substring(fileName.lastIndexOf('.'), fileName.length); //这里限定上传文件文件类型必须为.gz,如果文件类型不符,提示错误信息 if (file_typename == '.gz') { //计算文件大小 var fileSize = 0; //如果文件大小大于1024字节X1024字节,则显示文件大小单位为MB,否则为KB if (file.size > 1024 * 1024) { fileSize = Math.round(file.size * 100 / (1024 * 1024)) / 100; if (fileSize > 100) { alert('错误,文件超过100MB,禁止上传!'); return; } fileSize = fileSize.toString() + 'MB'; } else { fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; } //获取form数据 var formData = new FormData($("#importFileForm")[0]); //将form数据传递给后台处理。contentType必须设置为false,否则chrome和firefox不兼容 $.ajax({ url: '../../php/upload_backup.php', type: 'POST', data: formData, dataType: 'json', async: false, cache: false, contentType: , processData: false, success: function (data) { //上传成功后将控件内容清空,并显示上传成功信息 document.getElementById('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 = (pp.split('.'))[0]; //先清空要恢复的表 var clear_table = { action: "clear" + table_name }; $.ajax({ url: '../../php/client.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/client.php', type: "POST", dataType: 'json', data: { strRequest: JSON.stringify(restore_table) }, success: function (obj) { } }) } } alert("恢复备份成功!"); $('#upload_win').window('close'); } }, error: function (returnInfo) { //上传失败时显示上传失败信息 document.getElementById('uploadInfo').innerHTML = "<span style='color:Red'>" + returnInfo + "</span>"; } }); } else { //将错误信息显示在前端label文本中 document.getElementById('fileName').innerHTML = "<span style='color:Red'>错误提示:上传文件应该是.tar.gz后缀而不应该是" + file_typename + ",请重新选择文件</span>" }}
3.PHP部分:
<?php //通过$_FILES读取easyui-filebox控件的文件名 $picname = $_FILES['mypic']['name']; if ($picname != "") { //文件格式可以在js里判断,也可以在PHP中判断; //$type = strstr($picname, '.'); //限制上传格式 //if ($type != ".tar.gz") { // echo 0; //0代表文件格式不对; // exit; //} //上传路径 $pic_path = "/var/www/html/upload/". $picname; if(move_uploaded_file($_FILES['mypic']['tmp_name'], $pic_path)){//返回值1,代表文件上传成功; //解压文件 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;//1代表文件上传失败 } } ?>
阅读全文
0 0
- jQuery easyui-filebox+ajax+PHP实现文件上传并恢复备份
- easyUI filebox文件上传
- springMVC easyUI filebox 单个文件上传
- easyui filebox限制文件上传的类型
- easyui filebox限制文件上传的类型
- easyui filebox限制文件上传的类型
- jQuery EasyUI filebox的文件路径错误
- easyui easyui-filebox 上传文件按钮 更改为汉字
- jQuery+php实现ajax文件即时上传
- jQuery+php实现ajax文件即时上传
- MVC项目使用easyui的filebox控件上传文件
- easyui filebox限制文件上传的类型accept (新旧版本)
- easyui filebox 上传图片预览
- jQuery Ajax文件上传(php)
- 如何实现jQuery的Ajax文件上传,PHP如实文件上传. AJAX上传文件,PHP上传文件。
- easyui的filebox过滤文件
- PHP + jQuery实现ajax文件即时上传 预览
- PHP文件上传进度条完整程序实现 jQuery Ajax apc
- CentOS7使用firewalld打开关闭防火墙与端口
- 高级面向对象 之 原型继承
- Rstudio | Word | 用Rstudio来书写公式到word中
- 设计模式六大原则
- CTF之堆溢出-unlink原理探究
- jQuery easyui-filebox+ajax+PHP实现文件上传并恢复备份
- 此文献给正在拼搏的你、我、他
- HTML5学习笔记一
- Android进程间通信--Binder
- 函数-参数传值
- meminfo与vmallocinfo实例
- Android7.0中文文档(API)-- TextClock
- 编码规范与重构思路总结
- Git出现无法同步问题的解决方式