using Tiobon.Core.IServices;
using Tiobon.Core.Model.Models;
using Tiobon.Core.Services.BASE;
using Tiobon.Core.IRepository.Base;
using System.Dynamic;
using SqlSugar;
using Tiobon.Core.Model;
using Tiobon.Core.DataAccess;
using NPOI.HPSF;
using SharpCompress.Common;
using Tiobon.Core.Common;
using Tiobon.Core.Model.ViewModels;
namespace Tiobon.Core.Services
{
///
/// 附件 (服务)
///
public class Ghre_AttachmentServices : BaseServices, IGhre_AttachmentServices
{
private readonly IBaseRepository _dal;
public Ghre_AttachmentServices(IBaseRepository dal)
{
this._dal = dal;
base.BaseDal = dal;
}
public async Task> UploadVideoAsync(ChunkUpload upload)
{
var file = upload.file;
var path = $"{$"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}upload{Path.DirectorySeparatorChar}{upload.id}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
using (var stream = File.Create(path + $"{upload.chunkIndex}"))
{
await file.CopyToAsync(stream);
}
if (upload.chunkIndex == upload.totalChunks - 1)
{
var id = SnowFlakeSingle.Instance.NextId();
await FileMerge(upload.id, ".mp4", id);
using var _context = ContextFactory.CreateContext();
var ext = string.Empty;
if (string.IsNullOrEmpty(file.FileName) == false)
{
var dotPos = upload.fileName.LastIndexOf('.');
ext = upload.fileName.Substring(dotPos + 1);
}
var filePath = $"/files/upload/{id}.{ext}";
var fileAttachment = new Ghre_Attachment();
fileAttachment.Id = SnowFlakeSingle.Instance.NextId();
fileAttachment.AttachmentNo = upload.file.FileName;
fileAttachment.AttachFileName = upload.file.FileName;
fileAttachment.CreateBy = App.User.ID;
fileAttachment.CreateTime = DateTime.Now;
fileAttachment.AttachmentName = upload.fileName;
fileAttachment.AttachFileExtension = ext;
fileAttachment.AttachFileSize = upload.file.Length;
fileAttachment.PhysicsPath = filePath;
fileAttachment.RelativePath = filePath;
fileAttachment.FileURL = filePath;
fileAttachment.ThumbnailPath = filePath;
fileAttachment.AttachmentType = upload.file.ContentType;
//url = fileName + "." + ext;
_context.Add(fileAttachment);
_context.SaveChanges();
return ServiceResult.OprateSuccess("", new FileUploadResult()
{
Id = fileAttachment.Id,
AttachFileExtension = fileAttachment.AttachFileExtension,
AttachFileName = fileAttachment.AttachFileName,
AttachmentName = fileAttachment.AttachmentName,
AttachmentNo = fileAttachment.AttachmentNo,
FileURL = fileAttachment.FileURL,
PhysicsPath = fileAttachment.PhysicsPath,
RelativePath = fileAttachment.RelativePath,
ThumbnailPath = fileAttachment.ThumbnailPath,
AttachFileSize = fileAttachment.AttachFileSize,
});
}
return ServiceResult.OprateSuccess("", null);
}
public static async Task