using Tiobon.Core.IServices;
using Tiobon.Core.Model.Models;
using Tiobon.Core.Services.BASE;
using Tiobon.Core.IRepository.Base;
using Microsoft.AspNetCore.Http;
using System.Dynamic;
using SqlSugar;
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(IFormFile file, string fileName, int chunkIndex, int totalChunks, string id)
{
dynamic obj = new ExpandoObject();
string status = "error";
string message = string.Empty;
string pathHeader = string.Empty;
string url = string.Empty;
try
{
var path = $"{$"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}upload{Path.DirectorySeparatorChar}{id}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
using (var stream = File.Create(path + $"{chunkIndex}"))
{
await file.CopyToAsync(stream);
}
if (chunkIndex == totalChunks - 1)
await FileMerge(id, ".mp4", SnowFlakeSingle.Instance.NextId());
status = "ok";
}
catch (Exception E)
{
message = E.Message;
}
obj.url = url;
obj.status = status;
obj.message = message;
return obj;
}
public static async Task