Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

240 rindas
9.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["/wxbase64"] = WxUploadbase64;
  19. Post["/wxdelete"] = WxDeleteFile;
  20. Post["/wxuploadinsingle"] = WxUploadInSingle;
  21. }
  22. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  23. /// <summary>
  24. /// 获取附件列表
  25. /// </summary>
  26. /// <param name="_"></param>
  27. /// <returns></returns>
  28. public Response WxGetList(dynamic _)
  29. {
  30. var keyValue = this.GetReqData();
  31. var list = annexesFileIBLL.GetList(keyValue);
  32. return Success(list);
  33. }
  34. public Response WxUploadbase64(dynamic _)
  35. {
  36. var files = (List<HttpFile>)this.Context.Request.Files;
  37. //string folderId = Request.Form["folderId"];
  38. //string filePath = Config.GetValue("AnnexesFile");
  39. //string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  40. //string fileEextension = Path.GetExtension(files[0].Name);
  41. //string fileType = fileEextension.Replace(".", "");
  42. //string fileGuid = Guid.NewGuid().ToString();
  43. byte[] bytes = new byte[files[0].Value.Length];
  44. files[0].Value.Read(bytes, 0, bytes.Length);
  45. string src = Convert.ToBase64String(bytes);
  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. // string src = "data:image/png;base64," + Convert.ToBase64String(bytes);
  60. // //virtualPath
  61. //}
  62. return SuccessString(src);
  63. }
  64. /// <summary>
  65. /// 上传附件图片文件
  66. /// <summary>
  67. /// <returns></returns>
  68. public Response WxUpload(dynamic _)
  69. {
  70. try
  71. {
  72. var files = (List<HttpFile>)this.Context.Request.Files;
  73. string folderId = Request.Form["folderId"];
  74. string filePath = Config.GetValue("AnnexesFile");
  75. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  76. string fileEextension = Path.GetExtension(files[0].Name);
  77. string fileType = fileEextension.Replace(".", "");
  78. string fileGuid = Guid.NewGuid().ToString();
  79. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, userInfo.userId, uploadDate, fileGuid, fileEextension);
  80. //创建文件夹
  81. string path = Path.GetDirectoryName(virtualPath);
  82. Directory.CreateDirectory(path);
  83. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  84. if (!System.IO.File.Exists(virtualPath))
  85. {
  86. byte[] bytes = new byte[files[0].Value.Length];
  87. files[0].Value.Read(bytes, 0, bytes.Length);
  88. FileInfo file = new FileInfo(virtualPath);
  89. FileStream fs = file.Create();
  90. fs.Write(bytes, 0, bytes.Length);
  91. fs.Close();
  92. //文件信息写入数据库
  93. fileAnnexesEntity.F_Id = fileGuid;
  94. fileAnnexesEntity.F_FileName = files[0].Name;
  95. fileAnnexesEntity.F_FilePath = virtualPath;
  96. fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString();
  97. fileAnnexesEntity.F_FileExtensions = fileEextension;
  98. fileAnnexesEntity.F_FileType = fileType;
  99. fileAnnexesEntity.F_CreateUserId = userInfo.userId;
  100. fileAnnexesEntity.F_CreateUserName = userInfo.realName;
  101. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  102. }
  103. return SuccessString(folderId);
  104. }
  105. catch (Exception e)
  106. {
  107. return Fail($"上传失败({e.Message})");
  108. }
  109. }
  110. /// <summary>
  111. /// 上传附件图片文件【移动端app2.0,单独页面中的附件图片上传使用方法】
  112. /// <summary>
  113. /// <returns></returns>
  114. public Response WxUploadInSingle(dynamic _)
  115. {
  116. var files = (List<HttpFile>)this.Context.Request.Files;
  117. var folderId = this.GetReq<FileModel>().folderId;
  118. var name = this.GetReq<FileModel>().name;
  119. string filePath = Config.GetValue("AnnexesFile");
  120. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  121. string FileEextension = Path.GetExtension(name);
  122. string fileGuid = Guid.NewGuid().ToString();
  123. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, userInfo.userId, uploadDate, fileGuid, FileEextension);
  124. //创建文件夹
  125. string path = Path.GetDirectoryName(virtualPath);
  126. Directory.CreateDirectory(path);
  127. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  128. if (!System.IO.File.Exists(virtualPath))
  129. {
  130. byte[] bytes = new byte[files[0].Value.Length];
  131. files[0].Value.Read(bytes, 0, bytes.Length);
  132. FileInfo file = new FileInfo(virtualPath);
  133. FileStream fs = file.Create();
  134. fs.Write(bytes, 0, bytes.Length);
  135. fs.Close();
  136. //文件信息写入数据库
  137. fileAnnexesEntity.F_Id = fileGuid;
  138. fileAnnexesEntity.F_FolderId = folderId;
  139. fileAnnexesEntity.F_FileName = name;
  140. fileAnnexesEntity.F_FilePath = virtualPath;
  141. fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString();
  142. fileAnnexesEntity.F_FileExtensions = FileEextension;
  143. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  144. fileAnnexesEntity.F_CreateUserId = userInfo.userId;
  145. fileAnnexesEntity.F_CreateUserName = userInfo.realName;
  146. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  147. }
  148. return SuccessString(folderId);
  149. }
  150. /// <summary>
  151. /// 获取文件信息
  152. /// </summary>
  153. /// <param name="_"></param>
  154. /// <returns></returns>
  155. public Response WxFileInfo(dynamic _)
  156. {
  157. var fileId = this.GetReqData();
  158. var fileEntity = annexesFileIBLL.GetEntity(fileId);
  159. return Success(fileEntity);
  160. }
  161. /// <summary>
  162. /// 删除文件
  163. /// </summary>
  164. /// <param name="_"></param>
  165. /// <returns></returns>
  166. public Response WxDeleteFile(dynamic _)
  167. {
  168. var fileId = this.GetReqData();
  169. AnnexesFileEntity fileInfoEntity = annexesFileIBLL.GetEntity(fileId);
  170. if (fileInfoEntity != null)
  171. {
  172. annexesFileIBLL.DeleteEntity(fileId);
  173. //删除文件
  174. if (System.IO.File.Exists(fileInfoEntity.F_FilePath))
  175. {
  176. System.IO.File.Delete(fileInfoEntity.F_FilePath);
  177. }
  178. }
  179. return Success("删除成功");
  180. }
  181. /// <summary>
  182. /// 下载文件,微信小程序用
  183. ///
  184. /// 微信小程序可以预览图片、文档
  185. /// 支持的图片格式:.jpg .png .webp .gif
  186. /// 支持的文档格式:.doc(x) .xls(x) .ppt(x) .pdf
  187. ///
  188. /// 对于其他格式的文件,微信小程序官方未提供打开或预览的 API,文件对用户来说不可访问
  189. /// </summary>
  190. /// <param name="_"></param>
  191. /// <returns></returns>
  192. public Response WxDownload(dynamic _)
  193. {
  194. string name = this.GetReqData();
  195. string fileId = name.Split('.')[0];
  196. var fileEntity = annexesFileIBLL.GetEntity(fileId);
  197. string filepath = fileEntity.F_FilePath;
  198. if (!FileDownHelper.FileExists(filepath))
  199. {
  200. return 404;
  201. }
  202. FileDownHelper.DownLoadWx(filepath, fileEntity.F_FileType);
  203. return Success("");
  204. }
  205. public class FileModel
  206. {
  207. public string folderId { get; set; }
  208. public string name { get; set; }
  209. public string id { get; set; }
  210. }
  211. }
  212. }