using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using IStation.Untity;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// 处理文件辅助类
|
/// </summary>
|
public partial class FileHelper
|
{
|
|
#region Upload
|
|
/// <summary>
|
/// 上传文件 文件流形式
|
/// </summary>
|
/// <param name="suffix"></param>
|
/// <param name="stream"></param>
|
/// <returns></returns>
|
public static string UploadFile(Stream stream, string suffix)
|
{
|
var root = ConfigHelper.DataPath;
|
if (!Directory.Exists(root))
|
Directory.CreateDirectory(root);
|
var guid = GuidCreater.CreateN();
|
var fileName = guid + suffix;
|
var filePath = Path.Combine(root, fileName);
|
StreamTransfer.ToFile(stream, filePath);
|
return fileName;
|
}
|
|
/// <summary>
|
/// 上传到子文件夹文件 文件流形式
|
/// </summary>
|
/// <param name="sub">子文件夹</param>
|
/// <param name="suffix">文件拓展名</param>
|
/// <param name="stream">文件流</param>
|
/// <returns></returns>
|
public static string UploadSubFile(string sub, Stream stream, string suffix)
|
{
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
if (!Directory.Exists(root))
|
Directory.CreateDirectory(root);
|
var guid = GuidCreater.CreateN();
|
var fileName = guid + suffix;
|
var filePath = Path.Combine(root, fileName);
|
StreamTransfer.ToFile(stream, filePath);
|
return fileName;
|
}
|
|
|
/// <summary>
|
/// 上传文件 字节形式
|
/// </summary>
|
/// <param name="bytes">字节流</param>
|
/// <param name="suffix">文件拓展名</param>
|
/// <returns></returns>
|
public static string UploadFile(byte[] bytes, string suffix)
|
{
|
string root = ConfigHelper.DataPath;
|
if (!Directory.Exists(root))
|
Directory.CreateDirectory(root);
|
var guid = GuidCreater.CreateN();
|
var fileName = guid + suffix;
|
var filePath = Path.Combine(root, fileName);
|
System.IO.File.WriteAllBytes(filePath, bytes);
|
return fileName;
|
}
|
|
/// <summary>
|
/// 上传到子文件夹文件 字节形式
|
/// </summary>
|
/// <param name="sub">子文件夹名</param>
|
/// <param name="suffix">文件拓展名</param>
|
/// <param name="bytes">字节数组</param>
|
/// <returns></returns>
|
public static string UploadSubFile(string sub, byte[] bytes, string suffix)
|
{
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
if (!Directory.Exists(root))
|
Directory.CreateDirectory(root);
|
var guid = GuidCreater.CreateN();
|
var fileName = guid + suffix;
|
var filePath = Path.Combine(root, fileName);
|
System.IO.File.WriteAllBytes(filePath, bytes);
|
return fileName;
|
}
|
|
|
#endregion
|
|
#region Download
|
|
/// <summary>
|
/// 下载文件 文件流
|
/// </summary>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static Stream DownloadFile(string fileName)
|
{
|
var root = ConfigHelper.DataPath;
|
var filePath = Path.Combine(root, fileName);
|
if (System.IO.File.Exists(filePath))
|
{
|
return StreamTransfer.FromFile(filePath);
|
}
|
return null;
|
}
|
|
/// <summary>
|
/// 下载文件 文件流方式
|
/// </summary>
|
/// <param name="sub">子文件夹名</param>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static Stream DownloadSubFile(string sub, string fileName)
|
{
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
var filePath = Path.Combine(root, fileName);
|
|
if (System.IO.File.Exists(filePath))
|
{
|
return StreamTransfer.FromFile(filePath);
|
}
|
return default;
|
}
|
|
/// <summary>
|
/// 下载文件 字节形式
|
/// </summary>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static byte[] DownloadFile2(string fileName)
|
{
|
var root = ConfigHelper.DataPath;
|
var filePath = Path.Combine(root, fileName);
|
if (System.IO.File.Exists(filePath))
|
{
|
return System.IO.File.ReadAllBytes(filePath);
|
}
|
return default;
|
}
|
|
/// <summary>
|
/// 下载文件 字节形式
|
/// </summary>
|
/// <param name="sub">子文件夹名</param>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static byte[] DownloadSubFile2(string sub, string fileName)
|
{
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
var filePath = Path.Combine(root, fileName);
|
if (System.IO.File.Exists(filePath))
|
{
|
return System.IO.File.ReadAllBytes(filePath);
|
}
|
return default;
|
}
|
|
|
|
#endregion
|
|
#region Update
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
/// <param name="fileName">文件名称</param>
|
/// <param name="stream">流</param>
|
/// <param name="suffix">文件后缀</param>
|
/// <returns></returns>
|
public static string UpdateFile(string fileName, Stream stream, string suffix)
|
{
|
try
|
{
|
var code = UploadFile(stream, suffix);
|
if (!string.IsNullOrEmpty(code))
|
{
|
if (!string.IsNullOrEmpty(fileName))
|
Delete(fileName);
|
}
|
return code;
|
}
|
catch (Exception)
|
{
|
return default;
|
}
|
|
}
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
/// <param name="fileName">老文件名</param>
|
/// <param name="suffix">文件后缀</param>
|
/// <param name="bytes">字节流</param>
|
/// <returns></returns>
|
public static string UpdateFile2(string fileName, byte[] bytes, string suffix)
|
{
|
try
|
{
|
var code = UploadFile(bytes, suffix);
|
if (!string.IsNullOrEmpty(code))
|
{
|
if (!string.IsNullOrEmpty(fileName))
|
Delete(fileName);
|
}
|
return code;
|
}
|
catch (Exception)
|
{
|
return default;
|
}
|
}
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
/// <param name="sub">子文件夹</param>
|
/// <param name="fileName">老文件名</param>
|
/// <param name="suffix">文件后缀</param>
|
/// <param name="stream">字节流</param>
|
/// <returns></returns>
|
public static string UpdateSubFile(string sub, string fileName, Stream stream, string suffix)
|
{
|
try
|
{
|
var code = UploadSubFile(sub, stream, suffix);
|
if (!string.IsNullOrEmpty(code))
|
{
|
if (!string.IsNullOrEmpty(fileName))
|
Delete(sub, fileName);
|
}
|
return code;
|
}
|
catch (Exception)
|
{
|
return null;
|
}
|
|
}
|
|
|
/// <summary>
|
/// 更新文件
|
/// </summary>
|
/// <param name="sub">子文件夹</param>
|
/// <param name="fileName">老文件名</param>
|
/// <param name="suffix">文件后缀</param>
|
/// <param name="bytes">字节流</param>
|
/// <returns></returns>
|
public static string UpdateSubFile2(string sub, string fileName, byte[] bytes, string suffix)
|
{
|
try
|
{
|
var code = UploadSubFile(sub, bytes, suffix);
|
if (!string.IsNullOrEmpty(code))
|
{
|
if (!string.IsNullOrEmpty(fileName))
|
Delete(sub, fileName);
|
}
|
return code;
|
}
|
catch (Exception)
|
{
|
return null;
|
}
|
|
}
|
|
#endregion
|
|
#region Delete
|
|
/// <summary>
|
/// 删除文件
|
/// </summary>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static bool Delete(string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
try
|
{
|
var root = ConfigHelper.DataPath;
|
var filePath = System.IO.Path.Combine(root, fileName);
|
if (System.IO.File.Exists(filePath))
|
{
|
System.IO.File.Delete(filePath);
|
}
|
}
|
catch (Exception)
|
{
|
return false;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 删除文件
|
/// </summary>
|
/// <param name="sub">子文件名</param>
|
/// <param name="fileName">文件名称</param>
|
/// <returns></returns>
|
public static bool Delete(string sub, string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
var filePath = Path.Combine(root, fileName);
|
try
|
{
|
if (System.IO.File.Exists(filePath))
|
{
|
System.IO.File.Delete(filePath);
|
}
|
}
|
catch (Exception)
|
{
|
return false;
|
}
|
|
return true;
|
}
|
|
#endregion
|
|
#region Path
|
|
/// <summary>
|
/// 获取文件路径
|
/// </summary>
|
public static string GetFilePath(string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
var root = ConfigHelper.DataPath;
|
var filePath = System.IO.Path.Combine(root, fileName);
|
return filePath;
|
}
|
|
/// <summary>
|
/// 获取文件相对路径
|
/// </summary>
|
public static string GetRelatedFilePath(string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
return $"{ConfigHelper.DataFolder}/{fileName}";
|
}
|
|
/// <summary>
|
/// 获取文件路径
|
/// </summary>
|
public static string GetFilePath(string sub, string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
var filePath = Path.Combine(root, fileName);
|
return filePath;
|
}
|
|
/// <summary>
|
/// 获取文件路径2
|
/// </summary>
|
public static string GetFilePath2(string sub, string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
string root;
|
if (string.IsNullOrEmpty(sub))
|
{
|
root = ConfigHelper.DataPath;
|
}
|
else
|
{
|
root = Path.Combine(ConfigHelper.DataPath, sub);
|
}
|
if (!Directory.Exists(root))
|
Directory.CreateDirectory(root);
|
var filePath = Path.Combine(root, fileName);
|
return filePath;
|
}
|
|
/// <summary>
|
/// 获取文件相对路径
|
/// </summary>
|
public static string GetRelatedFilePath(string sub, string fileName)
|
{
|
if (string.IsNullOrEmpty(fileName))
|
return default;
|
if (string.IsNullOrEmpty(sub))
|
return GetRelatedFilePath(fileName);
|
return $"{ConfigHelper.DataFolder}/{sub}/{fileName}";
|
}
|
|
#endregion
|
|
|
|
}
|
}
|