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; }
}
}
}