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["/wxbase64"] = WxUploadbase64; Post["/wxdelete"] = WxDeleteFile; Post["/wxuploadinsingle"] = WxUploadInSingle; } private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL(); /// /// 获取附件列表 /// /// /// public Response WxGetList(dynamic _) { var keyValue = this.GetReqData(); var list = annexesFileIBLL.GetList(keyValue); return Success(list); } public Response WxUploadbase64(dynamic _) { var files = (List)this.Context.Request.Files; //string folderId = Request.Form["folderId"]; //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(); byte[] bytes = new byte[files[0].Value.Length]; files[0].Value.Read(bytes, 0, bytes.Length); string src = Convert.ToBase64String(bytes); //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(); // string src = "data:image/png;base64," + Convert.ToBase64String(bytes); // //virtualPath //} return SuccessString(src); } /// /// 上传附件图片文件 /// /// public Response WxUpload(dynamic _) { var files = (List)this.Context.Request.Files; string folderId = Request.Form["folderId"]; 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); } /// /// 获取文件信息 /// /// /// public Response WxFileInfo(dynamic _) { var fileId = this.GetReqData(); var fileEntity = annexesFileIBLL.GetEntity(fileId); return Success(fileEntity); } /// /// 删除文件 /// /// /// 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("删除成功"); } /// /// 下载文件,微信小程序用 /// /// 微信小程序可以预览图片、文档 /// 支持的图片格式:.jpg .png .webp .gif /// 支持的文档格式:.doc(x) .xls(x) .ppt(x) .pdf /// /// 对于其他格式的文件,微信小程序官方未提供打开或预览的 API,文件对用户来说不可访问 /// /// /// 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(""); } /// /// 上传附件图片文件【移动端app2.0,单独页面中的附件图片上传使用方法】 /// /// public Response WxUploadInSingle(dynamic _) { var files = (List)this.Context.Request.Files; var folderId = this.GetReq().folderId; var name = this.GetReq().name; string filePath = Config.GetValue("AnnexesFile"); string uploadDate = DateTime.Now.ToString("yyyyMMdd"); string FileEextension = Path.GetExtension(name); 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_FolderId = folderId; fileAnnexesEntity.F_FileName = name; fileAnnexesEntity.F_FilePath = virtualPath; fileAnnexesEntity.F_FileSize = files[0].Value.Length.ToString(); fileAnnexesEntity.F_FileExtensions = FileEextension; fileAnnexesEntity.F_FileType = FileEextension.Replace(".", ""); fileAnnexesEntity.F_CreateUserId = userInfo.userId; fileAnnexesEntity.F_CreateUserName = userInfo.realName; annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity); } return SuccessString(folderId); } public class FileModel { public string folderId { get; set; } public string name { get; set; } public string id { get; set; } } } }