需求:将测试环境release拉到生产环境
使用于文件、压缩文件上传
HttpClient相关使用
流转byte数组
以下场景理论都适用:文件上传、压缩包上传、前端主动选择文件上传(参考服务端代码)、客户端选择本机文件上传到服务器
源码地址:添加链接描述
测试环境代码:
/// <summary>
/// 普通文件上传不包含文件夹
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost(nameof(UploadAsync))]
public async ValueTask<JsonResult> UploadAsync([FromBody] UploadParam dto)
{
var ignore = _configuration.GetSection("Ignore").Get<List<string>>();
var dirInfo = new DirectoryInfo(dto.Source);
var dirinfoArr = dirInfo?.GetDirectories();
var msgResult = new List<string>();
if (dirinfoArr?.Count() <= 0)
{
var files = Directory.GetFiles(dto.Source);
foreach (var file in files)
{
//忽略的文件
if (dto.Ignore && ignore.Any(a => file.Contains(a)))
continue;
var fileInfo = new FileInfo(file);
var fileByte = System.IO.File.ReadAllBytes(file);
var result = await FileHelper.UploadFileAsync(dto.Ip, fileInfo.Name, fileInfo.Name, dto.TargetSource, fileByte);
msgResult.Add($"【{
fileInfo.Name}】上传状态:{
result}");
}
}
return new JsonResult(msgResult);
}
/// <summary>
/// zip方式上传文件
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost(nameof(UploadZipAsync))]
public async ValueTask<JsonResult> UploadZipAsync([FromBody] UploadParam dto)
{
//将源文件copy一份,递归排除掉忽略文件在压缩
//压缩之后需要删除源文件以及压缩包
//F:\\GitWork\\ZBB_GitTool\\bin\\Debug\\netcoreapp3.1
var ignore = _configuration.GetSection("Ignore").Get<List<string>>();
var ZipRootPath = _configuration.GetSection("ZipRootPath").Get<string>();
var packFilePath = $"{
ZipRootPath}\\{
Guid.NewGuid()}";
if (Directory.Exists(packFilePath) is false)
{
Directory.CreateDirectory(packFilePath);
}
//create zip file
var packZipName = $"{
Guid.NewGuid()}.zip";
var packZip = $"{
ZipRootPath}\\{
packZipName}";
//copy and RecursionExCludeFile
Copy(dto.Source, packFilePath, ignore, true);
var msgResult = new List<string>();
//compress
ZipFile.CreateFromDirectory(packFilePath, packZip);
//delete
await Task.Run(() =>
{
if (Directory.Exists(packFilePath))
{
</