添加项目文件。
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace IRaCIS.Core.Infrastructure
|
||||
{
|
||||
public class IPHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否为ip
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsIP(string ip)
|
||||
{
|
||||
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
|
||||
}
|
||||
|
||||
public static string GetIP(HttpRequest request)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
string ip = request.Headers["X-Real-IP"].FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(ip))
|
||||
{
|
||||
ip = request.Headers["X-Forwarded-For"].FirstOrDefault();
|
||||
}
|
||||
if (string.IsNullOrEmpty(ip))
|
||||
{
|
||||
ip = request.HttpContext?.Connection?.RemoteIpAddress?.ToString();
|
||||
}
|
||||
if (string.IsNullOrEmpty(ip) || !IsIP(ip))
|
||||
{
|
||||
ip = "127.0.0.1";
|
||||
}
|
||||
|
||||
return ip;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Core.Infrastructure
|
||||
{
|
||||
public class MD5Helper
|
||||
{
|
||||
public static string Md5(string target)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{ // MD5非线程安全
|
||||
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(target));
|
||||
StringBuilder sb = new StringBuilder(32);
|
||||
for (int i = 0; i < bytes.Length; ++i)
|
||||
sb.Append(bytes[i].ToString("x2"));
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
using ICSharpCode.SharpZipLib.Checksum;
|
||||
using ICSharpCode.SharpZipLib.Zip;
|
||||
|
||||
namespace IRaCIS.Core.Infrastructure
|
||||
{
|
||||
public class ZipHelper
|
||||
{
|
||||
public static void CreateZip(string sourceFilePath, string destinationZipFilePath)
|
||||
{
|
||||
if (sourceFilePath[sourceFilePath.Length - 1] != Path.DirectorySeparatorChar)
|
||||
sourceFilePath += Path.DirectorySeparatorChar;
|
||||
|
||||
ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath));
|
||||
zipStream.SetLevel(6); // 压缩级别 0-9
|
||||
CreateZipFiles(sourceFilePath, zipStream);
|
||||
zipStream.Finish();
|
||||
zipStream.Close();
|
||||
}
|
||||
|
||||
private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream)
|
||||
{
|
||||
Crc32 crc = new Crc32();
|
||||
string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath);
|
||||
foreach (string file in filesArray)
|
||||
{
|
||||
if (Directory.Exists(file)) //如果当前是文件夹,递归
|
||||
{
|
||||
CreateZipFiles(file, zipStream);
|
||||
}
|
||||
else //如果是文件,开始压缩
|
||||
{
|
||||
FileStream fileStream = File.OpenRead(file);
|
||||
byte[] buffer = new byte[fileStream.Length];
|
||||
fileStream.Read(buffer, 0, buffer.Length);
|
||||
string tempFile = file.Substring(sourceFilePath.LastIndexOf("\\") + 1);
|
||||
ZipEntry entry = new ZipEntry(tempFile);
|
||||
entry.DateTime = DateTime.Now;
|
||||
entry.Size = fileStream.Length;
|
||||
fileStream.Close();
|
||||
crc.Reset();
|
||||
crc.Update(buffer);
|
||||
entry.Crc = crc.Value;
|
||||
zipStream.PutNextEntry(entry);
|
||||
zipStream.Write(buffer, 0, buffer.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user