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 { /// /// 附件接口 /// [RoutePrefix("api/AnnexesApi")] [HandlerApiLogin(FilterMode.Enforce)] [TokenAuthorize] public class AnnexesApiController : WebApiControllerBase { private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL(); /// /// 上传绘图配置文件(包括图层颜色 和 标注样式) /// /// [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 "已经上传到服务器。"; } /// /// 查询绘图相关的配置文件 /// /// [HttpGet] public IHttpActionResult DrawingConfigFileList() { List list = new List(); 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); } /// /// 下载文件 /// /// 文件名,需要后缀 /// [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); } } /// /// POST上传文件 /// /// [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; } /// /// 下载文件 /// /// 文件ID /// [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); } } /// /// 根据文件夹ID获取第一个文件信息 /// /// 文件夹ID /// [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); } } } }