|
- using Learun.Application.Base.SystemModule;
- using Learun.Util;
- using Nancy;
- using System;
- using System.Collections.Generic;
- using System.IO;
-
- namespace Learun.Application.WebApi.Modules
- {
- public class AnnexesApiWx : BaseApi
- {
- public AnnexesApiWx()
- : base("/learun/adms/annexes")
- {
- Get["/wxlist"] = WxGetList;
- Get["/wxdown"] = WxDownload;
- Get["/wxfileinfo"] = WxFileInfo;
- Post["/wxupload"] = WxUpload;
- Post["/wxdelete"] = WxDeleteFile;
- }
- private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
-
- /// <summary>
- /// 获取附件列表
- /// </summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response WxGetList(dynamic _)
- {
- var keyValue = this.GetReqData();
- var list = annexesFileIBLL.GetList(keyValue);
-
- return Success(list);
- }
-
- /// <summary>
- /// 上传附件图片文件
- /// <summary>
- /// <returns></returns>
- public Response WxUpload(dynamic _)
- {
- var files = (List<HttpFile>)this.Context.Request.Files;
- var folderId = this.GetReqData();
-
- string filePath = Config.GetValue("AnnexesFile");
- string uploadDate = DateTime.Now.ToString("yyyyMMdd");
- string fileEextension = Path.GetExtension(files[0].Name);
- string fileType = fileEextension.Replace(".", "");
- string fileGuid = Guid.NewGuid().ToString();
-
- string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, userInfo.userId, uploadDate, fileGuid, fileEextension);
-
- //创建文件夹
- string path = Path.GetDirectoryName(virtualPath);
- Directory.CreateDirectory(path);
- AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
- if (!System.IO.File.Exists(virtualPath))
- {
- byte[] bytes = new byte[files[0].Value.Length];
- files[0].Value.Read(bytes, 0, bytes.Length);
- FileInfo file = new FileInfo(virtualPath);
- FileStream fs = file.Create();
- fs.Write(bytes, 0, bytes.Length);
- fs.Close();
-
- //文件信息写入数据库
- fileAnnexesEntity.F_Id = fileGuid;
- fileAnnexesEntity.F_FileName = files[0].Name;
- fileAnnexesEntity.F_FilePath = virtualPath;
- fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString();
- fileAnnexesEntity.F_FileExtensions = fileEextension;
- fileAnnexesEntity.F_FileType = fileType;
- fileAnnexesEntity.F_CreateUserId = userInfo.userId;
- fileAnnexesEntity.F_CreateUserName = userInfo.realName;
-
- annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
- }
-
- return SuccessString(fileGuid);
- }
-
- /// <summary>
- /// 获取文件信息
- /// </summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response WxFileInfo(dynamic _)
- {
- var fileId = this.GetReqData();
- var fileEntity = annexesFileIBLL.GetEntity(fileId);
-
- return Success(fileEntity);
- }
-
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response WxDeleteFile(dynamic _)
- {
- var fileId = this.GetReqData();
- AnnexesFileEntity fileInfoEntity = annexesFileIBLL.GetEntity(fileId);
- annexesFileIBLL.DeleteEntity(fileId);
- //删除文件
- if (System.IO.File.Exists(fileInfoEntity.F_FilePath))
- {
- System.IO.File.Delete(fileInfoEntity.F_FilePath);
- }
-
- return Success("删除成功");
- }
-
- /// <summary>
- /// 下载文件,微信小程序用
- ///
- /// 微信小程序可以预览图片、文档
- /// 支持的图片格式:.jpg .png .webp .gif
- /// 支持的文档格式:.doc(x) .xls(x) .ppt(x) .pdf
- ///
- /// 对于其他格式的文件,微信小程序官方未提供打开或预览的 API,文件对用户来说不可访问
- /// </summary>
- /// <param name="_"></param>
- /// <returns></returns>
- public Response WxDownload(dynamic _)
- {
- string name = this.GetReqData();
- string fileId = name.Split('.')[0];
- var fileEntity = annexesFileIBLL.GetEntity(fileId);
- string filepath = fileEntity.F_FilePath;
-
- if (!FileDownHelper.FileExists(filepath))
- {
- return 404;
- }
-
- FileDownHelper.DownLoadWx(filepath, fileEntity.F_FileType);
-
- return Success("");
- }
- }
- }
|