009_DI-Elec/Learun.Application.Web/AppApi/AnnexesApiController.cs

207 lines
6.3 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using Learun.Application.Base.SystemModule;
using Learun.Util;
namespace Learun.Application.Web.AppApi
{
/// <summary>
/// 附件接口
/// </summary>
[RoutePrefix("api/AnnexesApi")]
[HandlerApiLogin(FilterMode.Enforce)]
[TokenAuthorize]
public class AnnexesApiController : WebApiControllerBase
{
private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
/// <summary>
/// 上传绘图配置文件(包括图层颜色 和 标注样式)
/// </summary>
/// <returns></returns>
[HttpPost]
public string DrawingConfigFileUpload()
{
string ServerPathInXml = Config.GetValue("DrawingConfigFile");
try
{
HttpPostedFile file = HttpContext.Current.Request.Files["file"];//接收
if (file == null)
{
return "未选择文件";
}
string fileName = Path.GetFileName(file.FileName);//文件+后缀名
int fileSize = file.ContentLength;
Stream inputStream = file.InputStream;//文件流
var virtualPath = string.Format("{0}/{1}", ServerPathInXml, fileName);
string path = Path.GetDirectoryName(virtualPath);
Directory.CreateDirectory(path); //创建文件夹
if (!System.IO.File.Exists(virtualPath))
{
using (var fileStream = File.Create(virtualPath))
{
inputStream.Seek(0, SeekOrigin.Begin);
inputStream.CopyTo(fileStream);
}
}
}
catch (Exception ex)
{
return "failure";
}
return "已经上传到服务器。";
}
/// <summary>
/// 查询绘图相关的配置文件
/// </summary>
/// <returns></returns>
[HttpGet]
public IHttpActionResult DrawingConfigFileList()
{
List<string> list = new List<string>();
string ServerPathInXml = Config.GetValue("DrawingConfigFile");
if (System.IO.Directory.Exists(ServerPathInXml))
{
foreach (var filepath in System.IO.Directory.GetFiles(ServerPathInXml))
{
if (FileDownHelper.FileExists(filepath))
{
list.Add(filepath.Replace(ServerPathInXml + "\\", ""));
}
}
}
return Success(list);
}
/// <summary>
/// 下载文件
/// </summary>
/// <param name="FileName">文件名,需要后缀</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult DrawingConfigFileDownFile(string FileName)
{
try
{
string ServerPathInXml = Config.GetValue("DrawingConfigFile");
if (System.IO.Directory.Exists(ServerPathInXml))
{
if (FileDownHelper.FileExists(ServerPathInXml + "\\" + FileName))
{
FileDownHelper.DownLoadnew(ServerPathInXml + "\\" + FileName);
}
}
return Success("准备下载");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// POST上传文件
/// </summary>
/// <returns></returns>
[HttpPost]
public string UploadFile()
{
string fileGuid = Guid.NewGuid().ToString();
try
{
UserInfo userInfo = LoginUserInfo.Get();
HttpPostedFile file = HttpContext.Current.Request.Files["file"];//接收
if (file == null)
{
return "未选择文件";
}
string fileName = Path.GetFileName(file.FileName);//文件后缀名
int fileSize = file.ContentLength;
Stream s = file.InputStream;//文件流
annexesFileIBLL.SaveAnnexes(fileGuid, fileGuid, fileName, fileSize, s, userInfo, "");
}
catch (Exception ex)
{
return "failure";
}
return fileGuid;
}
/// <summary>
/// 下载文件
/// </summary>
/// <param name="fileId">文件ID</param>
/// <returns></returns>
[HttpGet]
public IHttpActionResult DownFile(string fileId)
{
try
{
var data = annexesFileIBLL.GetEntity(fileId);
if (data == null)
{
return Fail("不存在的FileId");
}
string filepath = data.F_FilePath;
log4net.LogManager.GetLogger("Info").Info("待下载的文件地址为:" + filepath);
if (FileDownHelper.FileExists(filepath))
{
FileDownHelper.DownLoadnew(filepath);
return Success("");
}
return Fail("服务器中不存在dwg文件");
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
/// <summary>
/// 根据文件夹ID获取第一个文件信息
/// </summary>
/// <param name="folderId">文件夹ID</param>
/// <returns></returns>
[HttpGet]
[ResponseType(typeof(AnnexesFileEntity))]
public IHttpActionResult GetFileEntity(string folderId)
{
try
{
AnnexesFileEntity entity = new AnnexesFileEntity();
var fileList = annexesFileIBLL.GetList(folderId).ToList();
if (fileList != null && fileList.Count > 0)
{
entity = fileList[0];
}
return Success(entity);
}
catch (Exception ex)
{
return Fail(ex.Message);
}
}
}
}