1、方法处理类
namespace tools
{
/// <summary>
/// 文件类型
/// 文件扩展名类型
/// </summary>
public enum FileType
{
/// <summary>
/// 未知类型
/// </summary>
Unknown,
/// <summary>
/// JPG图片文件
/// </summary>
JPG = 255216,
/// <summary>
/// GIF图片文件
/// </summary>
GIF = 7173,
/// <summary>
/// BMP图片文件
/// </summary>
BMP = 6677,
/// <summary>
/// PNG图片文件
/// </summary>
PNG = 13780,
/// <summary>
/// EXE可执行文件
/// </summary>
EXE = 7790,
/// <summary>
/// RAR压缩文件
/// </summary>
RAR = 8297,
/// <summary>
/// ZIP压缩文件
/// </summary>
ZIP = 8075,
/// <summary>
/// XML文本文件
/// </summary>
XML = 6063,
/// <summary>
/// HTML超文本文件
/// </summary>
HTML = 6033,
/// <summary>
/// ASPX模版引擎文件
/// </summary>
ASPX = 239187,
/// <summary>
/// C#类文件
/// </summary>
CS = 117115,
/// <summary>
/// JS脚本文件
/// </summary>
JS = 119105,
/// <summary>
/// TXT文本文件
/// </summary>
TXT = 210187,
/// <summary>
/// SQL数据库脚本文件
/// </summary>
SQL = 255254,
/// <summary>
/// MP3文件
/// </summary>
MP3 = 7368,
/// <summary>
/// BAT文件
/// </summary>
BAT = 64101,
/// <summary>
/// BTSEED文件
/// </summary>
BTSEED = 10056,
/// <summary>
/// RDP文件
/// </summary>
RDP = 255254,
/// <summary>
/// PSD文件
/// </summary>
PSD = 5666,
/// <summary>
/// PDF文件
/// </summary>
PDF = 3780,
/// <summary>
/// CHM文件
/// </summary>
CHM = 7384,
/// <summary>
/// LOG文件
/// </summary>
LOG = 70105,
/// <summary>
/// REG文件
/// </summary>
REG = 8269,
/// <summary>
/// HLP文件
/// </summary>
HLP = 6395,
/// <summary>
/// XLS 文件
/// </summary>
XLS = 208207,
/// <summary>
/// DOC文件
/// </summary>
DOC = 208207,
/// <summary>
/// DOCX 文件
/// </summary>
DOCX = 8075,
/// <summary>
/// XLSX文件
/// </summary>
XLSX = 8075,
/// <summary>
/// PPTX文件
/// </summary>
PPTX = 8075,
/// <summary>
/// MMAP文件
/// </summary>
MMAP = 8075,
/// <summary>
/// CSV文件
/// </summary>
CSV = 4944,
/// <summary>
/// Outlook邮件
/// </summary>
MSG = 176161,
}
/// <summary>
/// HttpUploadFile 的摘要说明
/// </summary>
public class HttpUploadFile
{
/// <summary>
/// 获取指定文件路径的文件真实类型,返回获取的文件真实类型
/// 未获取到数据则返回FileType.Unknown(未知类型)
/// </summary>
/// <param name="FilePath">文件路径</param>
/// <returns>文件真实类型</returns>
public static FileType GetFileRealType(string FilePath)
{
//处理错误参数
if (String.IsNullOrEmpty(FilePath))
{
return FileType.Unknown;
}
else { }
FileType result = FileType.Unknown;
//获取文件真实类型的标识码
string CodeString = null;
string FileFullPath = Path.GetFullPath(FilePath);
if (File.Exists(FileFullPath))
{
FileStream FileStrems = new FileStream(FileFullPath, FileMode.Open, FileAccess.Read);
using (BinaryReader BinaryReaders = new BinaryReader(FileStrems))
{
byte FileBuffer = BinaryReaders.ReadByte();
CodeString += FileBuffer.ToString();
FileBuffer = BinaryReaders.ReadByte();
CodeString += FileBuffer.ToString();
}
//获取文件真实类型
int Code = Convert.ToInt32(CodeString);
FileType FileRealType = (FileType)Enum.ToObject(typeof(FileType), Code);
if (Enum.IsDefined(typeof(FileType), FileRealType))
{
result = FileRealType;
}
else { }
}
else { }
return result;
}
/// <summary>
/// 上传文件,返回保存的文件路径
/// </summary>
/// <param name="SavePath">保存路径</param>
/// <param name="FileName">保存文件名称</param>
/// <param name="UploadName">上传文件集合名称</param>
/// <returns></returns>
public static string SaveHttpUploadFile(string SavePath, string RandTime, string UploadName, int size, out string FileName)
{
//处理错误参数
if ((String.IsNullOrEmpty(SavePath)) || (String.IsNullOrEmpty(UploadName)) || (String.IsNullOrEmpty(RandTime)) || (false == Path.IsPathRooted(SavePath)) || (null == HttpContext.Current.Request.Files[UploadName]))
{
FileName = "";
return null;
}
else { }
string result = null;
string FileNameNew = "";
HttpPostedFile UploadFile = HttpContext.Current.Request.Files[UploadName];
if (UploadFile.ContentLength > 0 && UploadFile.ContentLength < size)
{
//上传文件
if (!Directory.Exists(SavePath))
{
Directory.CreateDirectory(SavePath);
}
else { }
string FileExtension = Path.GetExtension(UploadFile.FileName);
string FileName_Old = Path.GetFileNameWithoutExtension(UploadFile.FileName);
if (!String.IsNullOrEmpty(FileExtension))//判断文件名是否含有后缀
{
FileNameNew = FileName_Old + RandTime + FileExtension;
}
else { }
FileName = FileNameNew;
string UploadPath = Path.Combine(SavePath, FileNameNew);
if (!String.IsNullOrEmpty(UploadPath))
{
UploadFile.SaveAs(UploadPath);
result = UploadPath;
}
else { }
}
else { }
FileName = FileNameNew;
return result;
}
/// <summary>
/// 上传图片,返回保存的文件路径(不进行压缩)
/// </summary>
/// <param name="SavePath">保存路径</param>
/// <param name="FileName">保存文件名称</param>
/// <param name="UploadName">上传文件集合名称</param>
/// <param name="size">文件大小</param>
/// <returns></returns>
public static string SaveHttpUploadImage(string SavePath, string FileName, string UploadName, int size)
{
//处理错误参数
if ((String.IsNullOrEmpty(SavePath)) || (String.IsNullOrEmpty(UploadName)) || (String.IsNullOrEmpty(FileName)) || (false == Path.IsPathRooted(SavePath)) || (null == HttpContext.Current.Request.Files[UploadName]))
{
return null;
}
else { }
string result = null;
HttpPostedFile UploadFile = HttpContext.Current.Request.Files[UploadName];
if (UploadFile.ContentLength > 0 && UploadFile.ContentLength < size)
{
//上传文件
if (!Directory.Exists(SavePath))
{
Directory.CreateDirectory(SavePath);
}
else { }
string FileExtension = Path.GetExtension(UploadFile.FileName);
if (!String.IsNullOrEmpty(FileExtension))//判断文件名是否含有后缀
{
FileName += FileExtension;
}
else { }
string UploadPath = Path.Combine(SavePath, FileName);
if (!String.IsNullOrEmpty(UploadPath))
{
UploadFile.SaveAs(UploadPath);
result = UploadPath;
}
else { }
}
else { }
return result;
}
/// <summary>
/// 上传图片,返回保存的文件路径(压缩版)
/// </summary>
/// <param name="SavePath">保存路径</param>
/// <param name="FileName">保存文件名称</param>
/// <param name="UploadName">上传文件集合名称</param>
/// <param name="size">文件大小</param>
/// <returns></returns>
public static string SaveHttpUploadFile_Compress(string SavePath, string FileName, string UploadName, int size)
{
//处理错误参数
if ((String.IsNullOrEmpty(SavePath)) || (String.IsNullOrEmpty(UploadName)) || (String.IsNullOrEmpty(FileName)) || (false == Path.IsPathRooted(SavePath)) || (null == HttpContext.Current.Request.Files[UploadName]))
{
return null;
}
else { }
string result = null;
HttpPostedFile UploadFile = HttpContext.Current.Request.Files[UploadName];
//上传文件
if (!Directory.Exists(SavePath))
{
Directory.CreateDirectory(SavePath);
}
else { }
string FileExtension = Path.GetExtension(UploadFile.FileName);
if (!String.IsNullOrEmpty(FileExtension))//判断文件名是否含有后缀
{
FileName += FileExtension;
}
else { }
string UploadPath = Path.Combine(SavePath, FileName);
string UploadSmailPath = Path.Combine(SavePath, FileName);
if (!String.IsNullOrEmpty(UploadPath))
{
UploadFile.SaveAs(UploadPath);
System.Drawing.Image iImage = GetReducedImage(285, 315, UploadPath);
switch (tools.HttpUploadFile.GetFileRealType(UploadPath))
{
case tools.FileType.BMP: iImage.Save(UploadSmailPath, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case tools.FileType.GIF: iImage.Save(UploadSmailPath, System.Drawing.Imaging.ImageFormat.Gif);
break;
case tools.FileType.JPG: iImage.Save(UploadSmailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case tools.FileType.PNG: iImage.Save(UploadSmailPath, System.Drawing.Imaging.ImageFormat.Png);
break;
}
iImage.Dispose();
result = UploadSmailPath;
}
else { }
return result;
}
//返回缩略图的方法
public static System.Drawing.Image GetReducedImage(int Width, int Height, string savePath)
{
System.Drawing.Image ResourceImage = System.Drawing.Image.FromFile(savePath);
//用指定的大小和格式初始化Bitmap类的新实例
Bitmap bitmap = new Bitmap(Width, Height, PixelFormat.Format32bppArgb);
//从指定的Image对象创建新Graphics对象
Graphics graphics = Graphics.FromImage(bitmap);
//清除整个绘图面并以透明背景色填充
graphics.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片对象
graphics.DrawImage(ResourceImage, new Rectangle(0, 0, Width, Height));
ResourceImage.Dispose();
return bitmap;
}
/// <summary>
/// EXECl文件导入
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public IWorkbook GetUploudWorkbook(HttpContext context)
{
if (context.Request.Files.Count <= 0)
{
throw new Exception("请选择需要导入的文件!");
}
var file = context.Request.Files[0];
string fileName = file.FileName;
string[] fileNameArray = fileName.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
if (fileNameArray.Length < 2)
{
throw new Exception("请选择需要导入的文件!");
}
if (file.InputStream.Length <= 0)
{
throw new Exception("EXCEL文件读取失败,请重新上传!");
}
string fileEXTName = fileNameArray[fileNameArray.Length - 1];
switch (fileEXTName)
{
case "xls":
return new NPOI.HSSF.UserModel.HSSFWorkbook(file.InputStream);
case "xlsx":
return new NPOI.XSSF.UserModel.XSSFWorkbook(file.InputStream);
default:
throw new Exception("文件格式不正确!");
}
}
}
}
2、进行调用
//保存上传文件
string FileName = "";//文件名称
string RandTime = DateTime.Now.ToString("yyyyMMddhhmmssffff");
string FilePath = "/Upload/";//上传路径
string SavePath = context.Server.MapPath("" + FilePath);
string UploadImagePath = tools.HttpUploadFile.SaveHttpUploadFile(SavePath, RandTime, "file", 5242880, out FileName);
if (!String.IsNullOrEmpty(UploadImagePath))
{
//文件安全校验
switch (tools.HttpUploadFile.GetFileRealType(UploadImagePath))
{
case tools.FileType.DOC:
case tools.FileType.DOCX:
case tools.FileType.PDF:
case tools.FileType.JPG:
case tools.FileType.PNG:
case tools.FileType.RAR:
case tools.FileType.MSG:
Message.Datas = (FilePath + FileName);
Message.count = 1;
Message.code = tools.ResultCodeType.Succeed;
Message.msg = "上传成功!";
break;
default:
System.IO.File.Delete(UploadImagePath);
Message.code = tools.ResultCodeType.UnknownError;
Message.msg = "文件安全性未知,禁止上传!";
break;
}
}
else { }
context.Response.Write(Json.Serialize(Message));