public class ExportUploadFile
{
#region 限制上传文件的后缀名
public static bool IsAllowedExtension(HtmlInputFile hifile)
{
string strOldFilePath = string.Empty, strExtension = string.Empty;
//允许上传的扩展名,可以改成从配置文件中读出
string[] arrExtension = { ".doc", ".pdf", ".jpg", ".txt" };
if (hifile.PostedFile.FileName != string.Empty)
{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//判断该扩展名是否合法
for (int i = 0; i < arrExtension.Length; i++)
{
if (strExtension.Equals(arrExtension[i]))
{
return true;
}
}
}
return false;
}
# endregion
#region 限制上传文件的大小
/// <summary>
/// 判断上传文件大小是否超过最大值
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <returns>超过最大值返回false,否则返回true.</returns>
public static bool IsAllowedLength(HtmlInputFile hifile)
{
//允许上传文件大小的最大值,单位为KB
int i = 20;
//如果上传文件的大小超过最大值,返回flase,否则返回true.
if (hifile.PostedFile.ContentLength > i * 1024)
{
return false;
}
return true;
}
#endregion
#region 覆盖文件(删除原有文件)
/// <summary>
/// 重新上传文件,删除原有文件
/// </summary>
/// <param name="ffFile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径. </param>
/// <param name="strOldFileName">旧文件名</param>
public static void CoverFile(HtmlInputFile ffFile, string strAbsolutePath, string strOldFileName)
{
//获得新文件名
//string strNewFileName = GetUniqueString();
if (ffFile.PostedFile.FileName != string.Empty)
{
//旧图片不为空时先删除旧图片
if (strOldFileName != string.Empty)
{
DeleteFile(strAbsolutePath, strOldFileName);
}
//SaveFile(ffFile, strAbsolutePath);
}
}
#endregion
#region 删除文件
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="strAbsolutePath">文件绝对路径</param>
/// <param name="strFileName">文件名</param>
public static void DeleteFile(string strAbsolutePath, string strFileName)
{
if (strAbsolutePath.LastIndexOf("\") == strAbsolutePath.Length)
{
if (File.Exists(strAbsolutePath + strFileName))
{
File.Delete(strAbsolutePath + strFileName);
}
}
else
{
if (File.Exists(strAbsolutePath + "\" + strFileName))
{
File.Delete(strAbsolutePath + "\" + strFileName);
}
}
}
#endregion
#region 与以前不重复的文件名
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns></returns>
public static string GetUniqueString()
{
return DateTime.Now.ToString("yyyyMMddhhmmss");
}
#endregion
/// <summary>
/// 删除文件
/// </summary>
/// <param name="name"></param>
public static void del(string name)
{
if (name.Length > 0)
if (File.Exists(Path.Combine("Save", name)))
File.Delete(Path.Combine("Save", name));
}
/// <summary>
/// 下载文件
/// </summary>
/// <param name="UrlPath"></param>
public static void FileDownload(string UrlPath)
{
try
{
FileInfo DownloadFile = new FileInfo(UrlPath);
if (File.Exists(UrlPath))
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Buffer = false;
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="
+ HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.ASCII));
HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
else
{
HttpContext.Current.Response.Write("<script language=javascript>alert('文件不存在');</script>");
}
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
///
/// </summary>
/// <param name="PostedFile"></param>
/// <param name="b"></param>
/// <returns></returns>
public static string GetName(HttpPostedFile PostedFile, bool b)
{
string Ret = "";
string CurrentPath = HttpContext.Current.Server.MapPath("Save");
Log.WriteLog("CurrentPath:" + CurrentPath, 1);
//Community.UtilityFun.Log.WriteLog("CurrentPath=" + CurrentPath, 1);
string FilePath = PostedFile.FileName;
string ExtensionName = Path.GetExtension(FilePath).Replace(".", "").ToLower();
List<Community.Model.UploadeFileManager> lnc = Community.BLL.UploadeFileManagerBLL.UploadeFileManager_select();
if (b == false)
{
//Community.UtilityFun.Log.WriteLog("b=false", 1);
foreach (Community.Model.UploadeFileManager nc in lnc)
{
//Community.UtilityFun.Log.WriteLog("ExtensionName=" + ExtensionName + " nc.ExtensionName.ToLower()= " + nc.ExtensionName.ToLower() + " nc.IsActive=" + nc.IsActive, 1);
if (nc.ExtensionName.ToLower() == ExtensionName && nc.IsActive != 0)
{
//Community.UtilityFun.Log.WriteLog("nc.IsActive=" + nc.IsActive, 1);
b = true;
break;
}
}
}
if (b)
{
//Community.UtilityFun.Log.WriteLog("b=true" , 1);
string TimeNow = Guid.NewGuid().ToString();
ExtensionName = TimeNow + "." + ExtensionName;
if (Directory.Exists(CurrentPath) == false)
{
try
{
Directory.CreateDirectory(CurrentPath);
}
catch(Exception ex)
{
//Community.UtilityFun.Log.WriteLog(" ex=" + ex, 1);
}
}
string SaveFilePath = Path.Combine(CurrentPath, ExtensionName);
while (File.Exists(SaveFilePath) == true)
{
ExtensionName = Guid.NewGuid().ToString() + "." + ExtensionName;
SaveFilePath = Path.Combine(CurrentPath, ExtensionName);
}
try
{
Ret = Path.GetFileName(SaveFilePath);
PostedFile.SaveAs(SaveFilePath);
}
catch(Exception ex)
{
Log.WriteLog("ex:" + ex.Message, 1);
//Community.UtilityFun.Log.WriteLog("ex1=" + ex, 1);
Ret = "";
}
//Log.WriteLog("Ret:" + Ret, 1);
return Ret;
}
else
{
//Community.UtilityFun.Log.WriteLog("kong", 1);
return "";
}
}
/// <summary>
///
/// </summary>
/// <param name="PostedFile"></param>
/// <param name="b"></param>
/// <returns></returns>
public static string GetName(HttpPostedFile PostedFile, bool b, string path)
{
string Ret = "";
string CurrentPath = path;// HttpContext.Current.Server.MapPath("Save");
string FilePath = PostedFile.FileName;
string ExtensionName = Path.GetExtension(FilePath).Replace(".", "").ToLower();
List<Community.Model.UploadeFileManager> lnc = Community.BLL.UploadeFileManagerBLL.UploadeFileManager_select();
if (b == false)
{
foreach (Community.Model.UploadeFileManager nc in lnc)
{
if (nc.ExtensionName.ToLower() == ExtensionName && nc.IsActive != 0)
{
b = true;
break;
}
}
}
if (b)
{
string TimeNow = Guid.NewGuid().ToString();
ExtensionName = TimeNow + "." + ExtensionName;
if (Directory.Exists(CurrentPath) == false)
{
Directory.CreateDirectory(CurrentPath);
}
string SaveFilePath = Path.Combine(CurrentPath, ExtensionName);
while (File.Exists(SaveFilePath) == true)
{
ExtensionName = Guid.NewGuid().ToString() + "." + ExtensionName;
SaveFilePath = Path.Combine(CurrentPath, ExtensionName);
}
try
{
Ret = Path.GetFileName(SaveFilePath);
PostedFile.SaveAs(SaveFilePath);
}
catch
{
Ret = "";
}
return Ret;
}
else
{
return "";
}
}
/**/
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
toheight = originalImage.Height * toheight / originalImage.Width;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
towidth = originalImage.Width * towidth / originalImage.Height;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(0, 0, originalImage.Width, originalImage.Height),
GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
public string CreateDownloadExecl(string ExeclName)
{
string ExeclModenPath = HttpContext.Current.Server.MapPath("~/");
ExeclModenPath = System.IO.Path.Combine(ExeclModenPath, "Execl");
Community.UtilityFun.Log.WriteLog("执行1" + ExeclModenPath, 1);
//生成的execl文件在根目录execl下,之后再对应的日期下:yyyyMMdd,之后再对应的管理员的User_ID下。
//如Execl--->yyyyMMdd--->User_ID---->正在学习的用户
string desFilePathByDay = System.IO.Path.Combine(ExeclModenPath, DateTime.Now.ToString("yyyyMMdd"));
Community.UtilityFun.Log.WriteLog("执行2" + desFilePathByDay, 1);
if (System.IO.Directory.Exists(desFilePathByDay) == false)
System.IO.Directory.CreateDirectory(desFilePathByDay);
string desFilePathByUserID = System.IO.Path.Combine(desFilePathByDay, Comm.CurrentUser.USER_ID);
Community.UtilityFun.Log.WriteLog("执行3" + desFilePathByUserID, 1);
if (System.IO.Directory.Exists(desFilePathByUserID) == false)
System.IO.Directory.CreateDirectory(desFilePathByUserID);
string desFilePath = System.IO.Path.Combine(desFilePathByUserID, ExeclName + ".xls");
Community.UtilityFun.Log.WriteLog("执行4" + desFilePath, 1);
//删除今天的历史导出记录
try
{
if (System.IO.File.Exists(desFilePath) == true)
System.IO.File.Delete(desFilePath);
//删除以往的所有导出记录
string[] OldDirectorys = System.IO.Directory.GetDirectories(ExeclModenPath);
foreach (string s in OldDirectorys)
{
string[] temps = s.Split('\');
string DirectorysName = temps[temps.Length - 1];
if (DirectorysName == DateTime.Now.ToString("yyyyMMdd") || DirectorysName == DateTime.Now.AddDays(-1).ToString("yyyyMMdd"))
{
continue;
}
else
{
//删除文件
string[] DirectorysTemp = System.IO.Directory.GetDirectories(s);
string[] FileTemp = System.IO.Directory.GetFiles(s);
foreach (string Files in FileTemp)
{
System.IO.File.Delete(Files);
}
foreach (string Directorys in DirectorysTemp)
{
string[] NewFileTemp = System.IO.Directory.GetFiles(Directorys);
foreach (string Files in NewFileTemp)
{
System.IO.File.Delete(Files);
}
System.IO.Directory.Delete(Directorys);
}
System.IO.Directory.Delete(s);
}
}
}
catch
{
return "";
}
string SourceFilePath = System.IO.Path.Combine(ExeclModenPath, "model.xls");
try
{
System.IO.File.Copy(SourceFilePath, desFilePath);
return desFilePath;
}
catch
{
return "";
}
}
}