@ -681,90 +681,108 @@ namespace IBKLinker_Minio.Controller.MinioController
MinioClient minio = new MinioClient ( "172.15.88.212:9000" , "minioadmin" , "minioadmin" ) ; //连接所需minio所在地址、登录名、密码
string buckname = "dayetegang" ; //桶名称
List < MinioStoragePath > date = new List < MinioStoragePath > ( ) ;
List < MinioStoragePath > checkdatelist = new List < MinioStoragePath > ( ) ;
string RecordFileName = "" ; //重复文件名称记录
///创建数据库连接上下文对象
db . BeginTransaction ( ) ; //启动事务
if ( minioStoragePath ! = null )
{
foreach ( var item in minioStoragePath )
foreach ( var items in minioStoragePath ) //先循环接收数据
{
checkdatelist = db . Query < MinioStoragePath > ( "select t.FILE_NAME from MINIO_STORAGE_PATH where 1=1 and FILE_NAME='" + items . FileName + "' and UPK='" + items . Upk + "'" ) . ToList ( ) ; //查询上传的文件或新建的文件夹在当前文件夹下是否有重复存在
if ( checkdatelist . Count > 0 ) //如果有
{
RecordFileName + = items . FileName + "," ; //记录名称
}
}
if ( RecordFileName = = null ) //如果没有正常上传
{
MinioStoragePath data = new MinioStoragePath ( ) ;
MinioOperationlog MOdata = new MinioOperationlog ( ) ;
date = db . Query < MinioStoragePath > ( "select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath [ 0 ] . Upk + "' ORDER BY PK" ) . ToList ( ) ;
if ( item . FileType = = 0 ) //如果是文件夹
foreach ( var item in minioStoragePath )
{
if ( item . Upk > 0 ) //判断如果创建的是根目录文件夹前端不需要对父级id传值
MinioStoragePath data = new MinioStoragePath ( ) ;
MinioOperationlog MOdata = new MinioOperationlog ( ) ;
date = db . Query < MinioStoragePath > ( "select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath [ 0 ] . Upk + "' ORDER BY PK" ) . ToList ( ) ;
if ( item . FileType = = 0 ) //如果是文件夹
{
if ( date . Count > 0 )
if ( item. Upk > 0 ) //判断如果创建的是根目录文件夹前端不需要对父级id传值
{
data . Upk = minioStoragePath [ 0 ] . Upk ; //子文件夹的父级id
if ( date . Count > 0 )
{
data . Upk = minioStoragePath [ 0 ] . Upk ; //子文件夹的父级id
data . FileName = minioStoragePath [ 0 ] . FileName ; //文件名称
data . FileType = minioStoragePath [ 0 ] . FileType ; //文件类型
data . FilePath = minioStoragePath [ 0 ] . FilePath ; //文件路径
data . CreatorUser = minioStoragePath [ 0 ] . CreatorUser ; //创建者
data . ClearFlag = "0" ; //删除状态为未删除
data . CreatorTime = DateTime . Now ; //创建时间
data . FileLevel = date [ 0 ] . FileLevel + 1 ; //层级
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
db . Insert < MinioStoragePath > ( data ) ;
}
}
else
{
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
data . Upk = 0 ; //子文件夹的父级id( 如果是根目录默认父级id为0)
data . FileName = minioStoragePath [ 0 ] . FileName ; //文件名称
data . FileType = minioStoragePath [ 0 ] . FileType ; //文件类型
data . FilePath = minioStoragePath [ 0 ] . FilePath ; //文件路径
data . CreatorUser = minioStoragePath [ 0 ] . CreatorUser ; //创建者
data . ClearFlag = "0" ; //删除状态为未删除
data . CreatorTime = DateTime . Now ; //创建时间
data . FileLevel = date [ 0 ] . FileLevel + 1 ; //层级
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
data . ClearFlag = "0" ; //删除状态为未删除
data . FileLevel = 1 ; //层级
db . Insert < MinioStoragePath > ( data ) ;
}
}
else
{
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
data . Upk = 0 ; //子文件夹的父级id( 如果是根目录默认父级id为0)
data . FileName = minioStoragePath [ 0 ] . FileName ; //文件名称
data . FileType = minioStoragePath [ 0 ] . FileType ; //文件类型
data . FilePath = minioStoragePath [ 0 ] . FilePath ; //文件路径
data . CreatorUser = minioStoragePath [ 0 ] . CreatorUser ; //创建者
data . CreatorTime = DateTime . Now ; //创建时间
data . ClearFlag = "0" ; //删除状态为未删除
data . FileLevel = 1 ; //层级
db . Insert < MinioStoragePath > ( data ) ;
}
#region minio创建文件夹
//var folderName = minioStoragePath[0].FilePath + "/";//取前端发送路径(或单一文件夹名称)
//minio.PutObjectAsync(buckname, folderName, new MemoryStream(), 0, "application/octet-stream");
# endregion
request . msg = "文件夹创建成功!" ;
request . code = "0" ;
}
if ( item . FileType = = 1 ) //如果是文件
{
var contentType = item . FileCategory ;
string strBase64 = item . Bate64 ; //取文件base64流数据
byte [ ] bt = Convert . FromBase64String ( strBase64 ) ; //获取html base64
var uploadTask = minio . PutObjectAsync ( buckname , "/" + item . FileName , new MemoryStream ( bt ) , bt . Length , contentType ) ; //上传文件到minio数据库
uploadTask . Wait ( ) ;
if ( uploadTask . Status = = TaskStatus . RanToCompletion & & ! uploadTask . IsFaulted ) //判断是否上传成功
{
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
data . Upk = item . Upk ; //子文件夹的父级id( 如果是根目录默认父级id为0)
data . FileName = item . FileName ; //文件名称
data . FileType = item . FileType ; //文件类型
data . FilePath = item . FilePath ; //文件路径
data . CreatorUser = item . CreatorUser ; //创建者
data . CreatorTime = DateTime . Now ; //创建时间
data . ClearFlag = "0" ; //删除状态为未删除
data . FileLevel = date [ 0 ] . FileLevel + 1 ; //层级
db . Insert < MinioStoragePath > ( data ) ;
request . msg = "文件上传成功!" ;
request . code = "0" ;
#region 记录日志
MOdata . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_OPERATIONLOG.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk;
MOdata . OperateUser = item . CreatorUser ; //操作者
MOdata . OperateTime = DateTime . Now ; //操作时间
MOdata . Operater = item . CreatorUser + "上传了一个新的文档," + item . FileName + DateTime . Now . ToString ( ) ; //操作
MOdata . CreationTime = DateTime . Now ; //创建时间
db . Insert < MinioOperationlog > ( MOdata ) ; //写入数据库
#region minio创建文件夹
//var folderName = minioStoragePath[0].FilePath + "/";//取前端发送路径(或单一文件夹名称)
//minio.PutObjectAsync(buckname, folderName, new MemoryStream(), 0, "application/octet-stream");
# endregion
request . msg = "文件夹创建成功!" ;
request . code = "0" ;
}
else
if ( item . FileType = = 1 ) //如果是文件
{
request . msg = "文件上传失败,请检查文件是否正确!" ;
request . code = "0" ;
var contentType = item . FileCategory ;
string strBase64 = item . Bate64 ; //取文件base64流数据
byte [ ] bt = Convert . FromBase64String ( strBase64 ) ; //获取html base64
var uploadTask = minio . PutObjectAsync ( buckname , "/" + item . FileName , new MemoryStream ( bt ) , bt . Length , contentType ) ; //上传文件到minio数据库
uploadTask . Wait ( ) ;
if ( uploadTask . Status = = TaskStatus . RanToCompletion & & ! uploadTask . IsFaulted ) //判断是否上传成功
{
data . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_STORAGE_PATH.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk
data . Upk = item . Upk ; //子文件夹的父级id( 如果是根目录默认父级id为0)
data . FileName = item . FileName ; //文件名称
data . FileType = item . FileType ; //文件类型
data . FilePath = item . FilePath ; //文件路径
data . CreatorUser = item . CreatorUser ; //创建者
data . CreatorTime = DateTime . Now ; //创建时间
data . ClearFlag = "0" ; //删除状态为未删除
data . FileLevel = date [ 0 ] . FileLevel + 1 ; //层级
db . Insert < MinioStoragePath > ( data ) ;
request . msg = "文件上传成功!" ;
request . code = "0" ;
#region 记录日志
MOdata . Pk = Convert . ToInt32 ( db . QueryScalar ( "select S_MINIO_OPERATIONLOG.nextval from dual" ) ) ; ///拿到表自增长的值赋值给自增长主键pk;
MOdata . OperateUser = item . CreatorUser ; //操作者
MOdata . OperateTime = DateTime . Now ; //操作时间
MOdata . Operater = item . CreatorUser + "上传了一个新的文档," + item . FileName + DateTime . Now . ToString ( ) ; //操作
MOdata . CreationTime = DateTime . Now ; //创建时间
db . Insert < MinioOperationlog > ( MOdata ) ; //写入数据库
# endregion
}
else
{
request . msg = "文件上传失败,请检查文件是否正确!" ;
request . code = "1" ;
}
}
}
}
else
{
request . msg = "文件上传失败,其中" + RecordFileName + "在此文件夹已经存在!" ;
request . code = "1" ;
}
db . Commit ( ) ;
}
}
@ -1102,9 +1120,9 @@ namespace IBKLinker_Minio.Controller.MinioController
[HttpPost, Route("FileDownload")]
public RequestEntity FileDownload ( List < MinioStoragePath > minioStoragePath )
{
MinioBusinessLogic bb = new MinioBusinessLogic ( ) ;
RequestEntity request = new RequestEntity ( ) ;
MinioStoragePath data = new MinioStoragePath () ;
MinioBusinessLogic bb = new MinioBusinessLogic ( ) ; //定义业务逻辑方法
RequestEntity request = new RequestEntity ( ) ; //定义返回集合
List< MinioStoragePath> data = new List< MinioStoragePath> () ; //定义输出下载的list
using ( IDbContext db = ObjectContainer . GetObject < IDbContext > ( "db" ) )
{
try
@ -1113,20 +1131,21 @@ namespace IBKLinker_Minio.Controller.MinioController
{
foreach ( var item in minioStoragePath )
{
var minio = new MinioClient ( "172.15.88.212:9000" , "minioadmin" , "minioadmin" ) ;
MinioStoragePath date = new MinioStoragePath ( ) ; //定义单条返回数据
var minio = new MinioClient ( "172.15.88.212:9000" , "minioadmin" , "minioadmin" ) ; //链接minio数据库
string bucketName = "dayetegang" ;
var uploadTask = bb . Download ( bucketName , item . FileName ) ; //异步取base64
uploadTask . Wait ( ) ; //等待取值
if ( uploadTask . Status = = TaskStatus . RanToCompletion & & ! uploadTask . IsFaulted ) //判读是否有数值
{
data . Bate64 = uploadTask . Result ;
data . FileName = item . FileName ;
date . Bate64 = uploadTask . Result ; //赋值流文件
date . FileName = item . FileName ; //赋值文件名称
data . Add ( date ) ;
if ( item . OperationType = = "0" ) //操作类型为下载
{
int DownloadNum = item . DownloadNum + 1 ;
int DownloadNum = item . DownloadNum + 1 ; //将下载次数加一
string sql = "update MINIO_STORAGE_PATH set DOWNLOAD_NUM='" + DownloadNum + "' where pk='" + item . Pk + "'" ;
db . Execute ( sql ) ;
db . Execute ( sql ) ; //更新下载次数
}
request . code = "0" ;
}
@ -1138,7 +1157,7 @@ namespace IBKLinker_Minio.Controller.MinioController
}
if ( data ! = null )
{
request . data = data ;
request . data = data ; //返回数据
}
}
else
@ -1158,11 +1177,15 @@ namespace IBKLinker_Minio.Controller.MinioController
return request ;
}
# endregion
#region 标准清单
/// <summary>
/// 标准清单导出接口
/// </summary>
[HttpPost, Route("StandardListGeneration")]
public HttpResponseMessage StandardListGeneration ( StandardListGenerationModel master )
{
RequestEntity request = new RequestEntity ( ) ;
RequestEntity request = new RequestEntity ( ) ; //定义返回集合
IList < MinioStoragePath > date = new List < MinioStoragePath > ( ) ;
HttpResponseMessage result = new HttpResponseMessage ( HttpStatusCode . OK ) ;
using ( IDbContext db = ObjectContainer . GetObject < IDbContext > ( "db" ) )
@ -1321,6 +1344,7 @@ namespace IBKLinker_Minio.Controller.MinioController
return result ;
}
# endregion
#region 公用方法
/// <summary>
/// 矫正pk值