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
|
{
|
/// <summary>
|
/// 文件管理
|
/// </summary>
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
public class FileController : ControllerBase
|
{
|
ILogger<FileController> _Logger;
|
|
public FileController(
|
ILogger<FileController> Logger
|
)
|
{
|
_Logger = Logger;
|
}
|
|
[HttpPost]
|
public async Task<MessageModel<string>> 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<string>
|
{
|
success = true,
|
msg = msg,
|
response = "https://" + OssBucket + "." + OssEndpoint + "/" + relativeFile
|
};
|
|
ErrorResult:
|
return new MessageModel<string>
|
{
|
success = false,
|
msg = msg,
|
response = ""
|
};
|
}
|
}
|
}
|