189 lines
7.3 KiB
C#
189 lines
7.3 KiB
C#
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|||
|
using ICSharpCode.SharpZipLib.Zip;
|
|||
|
using Learun.Application.Base.SystemModule;
|
|||
|
using Learun.Application.TwoDevelopment.ZZDT_EC;
|
|||
|
using Learun.Util;
|
|||
|
using Microsoft.Owin;
|
|||
|
using NPOI.Util;
|
|||
|
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Web;
|
|||
|
using System.Web.Http;
|
|||
|
using System.Web.Http.Results;
|
|||
|
using static Learun.Application.TwoDevelopment.ZZDT_EC.ec_library_fileBLL;
|
|||
|
|
|||
|
namespace Learun.Application.Web.AppApi
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 客户端更新接口,包括下载和上传(管理员)
|
|||
|
/// </summary>
|
|||
|
[RoutePrefix("api/UpdateApi")]
|
|||
|
[HandlerApiLogin(FilterMode.Ignore)]
|
|||
|
public class UpdateApiController : WebApiControllerBase
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 下载自动化平台的更新程序
|
|||
|
/// </summary>
|
|||
|
/// <param name="MD5"></param>
|
|||
|
/// <param name="pkgName">Exe-X64</param>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpGet]
|
|||
|
public IHttpActionResult UpdateFile(string MD5, string pkgName = "Exe-X64")
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
pkgName += ".zip";
|
|||
|
string ServerPath = Config.GetValue("SWSUpdateFile");
|
|||
|
if (System.IO.Directory.Exists(ServerPath))
|
|||
|
{
|
|||
|
string path = Path.Combine(ServerPath, pkgName);
|
|||
|
if (FileDownHelper.FileExists(path))
|
|||
|
{
|
|||
|
var newMD5 = Md5Helper.Encrypt(File.ReadAllBytes(path), 32);
|
|||
|
if (MD5 != newMD5)
|
|||
|
{
|
|||
|
FileDownHelper.DownLoadnew(path);
|
|||
|
return Success("正在下载");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return Success("无需更新");
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return BadRequest($"更新文件{path.Substring(2)}在服务器中不存在");//400的code
|
|||
|
}
|
|||
|
}
|
|||
|
return BadRequest("更新文件夹在服务器中不存在");
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return Fail("其他错误。" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 上传自动化平台的更新程序
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpPost]
|
|||
|
[SwaggerFileLoadAttr]
|
|||
|
public IHttpActionResult UploadFile(string adminPwd)
|
|||
|
{
|
|||
|
string exeName = "SignalManage";
|
|||
|
try
|
|||
|
{
|
|||
|
if (adminPwd != "CADTeam8081")
|
|||
|
{
|
|||
|
return Fail("adminPwd参数(密码)不对");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var x = HttpContext.Current.Request.Files;//HttpPostedFile file = HttpContext.Current.Request.Files["file"];//接收
|
|||
|
if (x == null || x.Count == 0)
|
|||
|
{
|
|||
|
return Fail("未选择文件");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var file = x[0];
|
|||
|
string fileName = Path.GetFileName(file.FileName);//文件名,带后缀名
|
|||
|
if (!fileName.ToLower().EndsWith(".zip"))
|
|||
|
{
|
|||
|
return Fail("请上传zip格式的更新包。");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Stream s = file.InputStream;//文件流
|
|||
|
#region 检查zip
|
|||
|
bool foundExe = false;
|
|||
|
//一个ZIP文件中的条目,可以理解为压缩包里面的一个文件夹/文件
|
|||
|
ZipEntry theEntry = null;
|
|||
|
//解压缩输出流,从压缩包中一个接一个的读出文档。
|
|||
|
using (ZipInputStream inputStream = new ZipInputStream(s))
|
|||
|
{
|
|||
|
while ((theEntry = inputStream.GetNextEntry()) != null)
|
|||
|
{
|
|||
|
if (theEntry.IsDirectory)
|
|||
|
{
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (theEntry.Name.ToLower() == exeName.ToLower() + ".exe")
|
|||
|
{
|
|||
|
foundExe = true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
inputStream.Close();
|
|||
|
}
|
|||
|
if (!foundExe)
|
|||
|
{
|
|||
|
return Fail($"未在zip中找到{exeName}.exe");
|
|||
|
}
|
|||
|
#endregion
|
|||
|
int fileSize = file.ContentLength;
|
|||
|
string ServerPath = Config.GetValue("SWSUpdateFile");
|
|||
|
if (!System.IO.File.Exists(ServerPath))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(ServerPath); //创建文件夹
|
|||
|
}
|
|||
|
using (var fileStream = File.Create(Path.Combine(ServerPath, fileName)))
|
|||
|
{
|
|||
|
s.Seek(0, SeekOrigin.Begin);
|
|||
|
s.CopyTo(fileStream);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return Success("上传成功。");
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return Fail("上传更新包错误。" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 下载插件端更新程序
|
|||
|
/// </summary>
|
|||
|
/// <param name="MD5">当前程序MD5</param>
|
|||
|
/// <returns></returns>
|
|||
|
[HttpGet]
|
|||
|
public IHttpActionResult UpdateCAD(string MD5)
|
|||
|
{
|
|||
|
var folder = "StartCAD.zip";
|
|||
|
try
|
|||
|
{
|
|||
|
string ServerPath = Config.GetValue("SWSUpdateFile");
|
|||
|
if (System.IO.Directory.Exists(ServerPath))
|
|||
|
{
|
|||
|
string path = Path.Combine(ServerPath, folder);
|
|||
|
if (FileDownHelper.FileExists(path))
|
|||
|
{
|
|||
|
var newMD5 = Md5Helper.Encrypt(File.ReadAllBytes(path), 32);
|
|||
|
if (MD5 != newMD5)
|
|||
|
{
|
|||
|
FileDownHelper.DownLoadnew(path);
|
|||
|
return Success("正在下载");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return Success("无需更新");
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return BadRequest($"更新文件{path.Substring(2)}在服务器中不存在");//400的code
|
|||
|
}
|
|||
|
}
|
|||
|
return BadRequest($"更新文件夹在服务器中不存在");
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return BadRequest(ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|