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