Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

198 linhas
7.3 KiB

  1. using Learun.Application.Base.SystemModule;
  2. using Learun.Util;
  3. using Nancy;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. namespace Learun.Application.WebApi.Modules
  8. {
  9. public class AnnexesApiWx : BaseApi
  10. {
  11. public AnnexesApiWx()
  12. : base("/learun/adms/annexes")
  13. {
  14. Get["/wxlist"] = WxGetList;
  15. Get["/wxdown"] = WxDownload;
  16. Get["/wxfileinfo"] = WxFileInfo;
  17. Post["/wxupload"] = WxUpload;
  18. Post["/wxdelete"] = WxDeleteFile;
  19. Post["/wxuploadinsingle"] = WxUploadInSingle;
  20. }
  21. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  22. /// <summary>
  23. /// 获取附件列表
  24. /// </summary>
  25. /// <param name="_"></param>
  26. /// <returns></returns>
  27. public Response WxGetList(dynamic _)
  28. {
  29. var keyValue = this.GetReqData();
  30. var list = annexesFileIBLL.GetList(keyValue);
  31. return Success(list);
  32. }
  33. /// <summary>
  34. /// 上传附件图片文件
  35. /// <summary>
  36. /// <returns></returns>
  37. public Response WxUpload(dynamic _)
  38. {
  39. var files = (List<HttpFile>)this.Context.Request.Files;
  40. string folderId = Request.Form["folderId"];
  41. string filePath = Config.GetValue("AnnexesFile");
  42. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  43. string fileEextension = Path.GetExtension(files[0].Name);
  44. string fileType = fileEextension.Replace(".", "");
  45. string fileGuid = Guid.NewGuid().ToString();
  46. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, userInfo.userId, uploadDate, fileGuid, fileEextension);
  47. //创建文件夹
  48. string path = Path.GetDirectoryName(virtualPath);
  49. Directory.CreateDirectory(path);
  50. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  51. if (!System.IO.File.Exists(virtualPath))
  52. {
  53. byte[] bytes = new byte[files[0].Value.Length];
  54. files[0].Value.Read(bytes, 0, bytes.Length);
  55. FileInfo file = new FileInfo(virtualPath);
  56. FileStream fs = file.Create();
  57. fs.Write(bytes, 0, bytes.Length);
  58. fs.Close();
  59. //文件信息写入数据库
  60. fileAnnexesEntity.F_Id = fileGuid;
  61. fileAnnexesEntity.F_FileName = files[0].Name;
  62. fileAnnexesEntity.F_FilePath = virtualPath;
  63. fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString();
  64. fileAnnexesEntity.F_FileExtensions = fileEextension;
  65. fileAnnexesEntity.F_FileType = fileType;
  66. fileAnnexesEntity.F_CreateUserId = userInfo.userId;
  67. fileAnnexesEntity.F_CreateUserName = userInfo.realName;
  68. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  69. }
  70. return SuccessString(folderId);
  71. }
  72. /// <summary>
  73. /// 上传附件图片文件【移动端app2.0,单独页面中的附件图片上传使用方法】
  74. /// <summary>
  75. /// <returns></returns>
  76. public Response WxUploadInSingle(dynamic _)
  77. {
  78. var files = (List<HttpFile>)this.Context.Request.Files;
  79. var folderId = this.GetReq<FileModel>().folderId;
  80. var name = this.GetReq<FileModel>().name;
  81. string filePath = Config.GetValue("AnnexesFile");
  82. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  83. string FileEextension = Path.GetExtension(name);
  84. string fileGuid = Guid.NewGuid().ToString();
  85. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, userInfo.userId, uploadDate, fileGuid, FileEextension);
  86. //创建文件夹
  87. string path = Path.GetDirectoryName(virtualPath);
  88. Directory.CreateDirectory(path);
  89. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  90. if (!System.IO.File.Exists(virtualPath))
  91. {
  92. byte[] bytes = new byte[files[0].Value.Length];
  93. files[0].Value.Read(bytes, 0, bytes.Length);
  94. FileInfo file = new FileInfo(virtualPath);
  95. FileStream fs = file.Create();
  96. fs.Write(bytes, 0, bytes.Length);
  97. fs.Close();
  98. //文件信息写入数据库
  99. fileAnnexesEntity.F_Id = fileGuid;
  100. fileAnnexesEntity.F_FolderId = folderId;
  101. fileAnnexesEntity.F_FileName = name;
  102. fileAnnexesEntity.F_FilePath = virtualPath;
  103. fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString();
  104. fileAnnexesEntity.F_FileExtensions = FileEextension;
  105. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  106. fileAnnexesEntity.F_CreateUserId = userInfo.userId;
  107. fileAnnexesEntity.F_CreateUserName = userInfo.realName;
  108. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  109. }
  110. return SuccessString(folderId);
  111. }
  112. /// <summary>
  113. /// 获取文件信息
  114. /// </summary>
  115. /// <param name="_"></param>
  116. /// <returns></returns>
  117. public Response WxFileInfo(dynamic _)
  118. {
  119. var fileId = this.GetReqData();
  120. var fileEntity = annexesFileIBLL.GetEntity(fileId);
  121. return Success(fileEntity);
  122. }
  123. /// <summary>
  124. /// 删除文件
  125. /// </summary>
  126. /// <param name="_"></param>
  127. /// <returns></returns>
  128. public Response WxDeleteFile(dynamic _)
  129. {
  130. var fileId = this.GetReqData();
  131. AnnexesFileEntity fileInfoEntity = annexesFileIBLL.GetEntity(fileId);
  132. if (fileInfoEntity != null)
  133. {
  134. annexesFileIBLL.DeleteEntity(fileId);
  135. //删除文件
  136. if (System.IO.File.Exists(fileInfoEntity.F_FilePath))
  137. {
  138. System.IO.File.Delete(fileInfoEntity.F_FilePath);
  139. }
  140. }
  141. return Success("删除成功");
  142. }
  143. /// <summary>
  144. /// 下载文件,微信小程序用
  145. ///
  146. /// 微信小程序可以预览图片、文档
  147. /// 支持的图片格式:.jpg .png .webp .gif
  148. /// 支持的文档格式:.doc(x) .xls(x) .ppt(x) .pdf
  149. ///
  150. /// 对于其他格式的文件,微信小程序官方未提供打开或预览的 API,文件对用户来说不可访问
  151. /// </summary>
  152. /// <param name="_"></param>
  153. /// <returns></returns>
  154. public Response WxDownload(dynamic _)
  155. {
  156. string name = this.GetReqData();
  157. string fileId = name.Split('.')[0];
  158. var fileEntity = annexesFileIBLL.GetEntity(fileId);
  159. string filepath = fileEntity.F_FilePath;
  160. if (!FileDownHelper.FileExists(filepath))
  161. {
  162. return 404;
  163. }
  164. FileDownHelper.DownLoadWx(filepath, fileEntity.F_FileType);
  165. return Success("");
  166. }
  167. public class FileModel
  168. {
  169. public string folderId { get; set; }
  170. public string name { get; set; }
  171. public string id { get; set; }
  172. }
  173. }
  174. }