using JiepeiWMS.Common;
using JiepeiWMS.Filter;
using JiepeiWMS.Model;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace JiepeiWMS.Api.Controllers
{
///
/// 文件管理
///
[Route("api/[controller]/[action]")]
[ApiController]
public class FileController : ControllerBase
{
ILogger _Logger;
public FileController(
ILogger Logger
)
{
_Logger = Logger;
}
[HttpPost]
public async Task> UploadFile(string ModuleName)
{
var msg = string.Empty;
var files = Request.Form.Files;
var file = files.FirstOrDefault();
var srcfilename = file.FileName;
if (!Regex.IsMatch(srcfilename, @"\.(bmp|jpg|png|gif|doc|docx|xls|xlsx|pdf)$"))
{
msg = "格式有误";
goto ErrorResult;
}
var pathsep = "/";
var newFileName = Utils.GetNewFileName();
//文件地址
var relativeFile = "wms" + pathsep + (string.IsNullOrEmpty(ModuleName)?string.Empty:ModuleName + pathsep) + DateTime.Now.Year + pathsep + DateTime.Now.Month + pathsep + DateTime.Now.Day + pathsep + newFileName + Path.GetExtension(srcfilename);
// 阿里云信息
var OssAccessKeyId = Appsettings.app("AppSettings", "OssAccessKeyId").ToString();
var OssAccessKeySecret = Appsettings.app("AppSettings", "OssAccessKeySecret").ToString();
var OssEndpoint = Appsettings.app("AppSettings", "OssEndpoint").ToString();
var OssBucket = Appsettings.app("AppSettings", "OssBucket").ToString();
try
{
var mstrm = new MemoryStream();
await file.CopyToAsync(mstrm);
mstrm.Position = 0;
// 服务器地址,绝对路径
var oss = new Tools.AliYun.OSS(OssAccessKeyId, OssAccessKeySecret, OssEndpoint, OssBucket);
bool result = oss.UploadFile(relativeFile, mstrm);
}
catch (Exception ex)
{
_Logger.LogError(ex.ToString());
msg = ex.Message;
goto ErrorResult;
}
return new MessageModel
{
success = true,
msg = msg,
response = "https://" + OssBucket + "." + OssEndpoint + "/" + relativeFile
};
ErrorResult:
return new MessageModel
{
success = false,
msg = msg,
response = ""
};
}
}
}