You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.0 KiB
C#
115 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Web;
|
|
|
|
namespace Web
|
|
{
|
|
public class FileUpload
|
|
{
|
|
private HttpContextBase context = null;
|
|
|
|
public string Type { get; set; }
|
|
public string UploadPath { get; set; }
|
|
public int MaxLength { get; set; }
|
|
|
|
|
|
public string PostName { get; private set; }
|
|
public string SaveName { get; private set; }
|
|
public int FileLength { get; private set; }
|
|
public string ExtName { get; private set; }
|
|
public string SavePath { get; private set; }
|
|
|
|
//private static readonly string _uploadPath = "~/upload/";
|
|
|
|
//public static string UploadPath { get { return _uploadPath; } }
|
|
|
|
public FileUpload(HttpContextBase httpContext)
|
|
: this()
|
|
{
|
|
context = httpContext;
|
|
}
|
|
|
|
public FileUpload()
|
|
{
|
|
Type = "txt|rar|zip|jpg|jpeg|png|gif|bmp";
|
|
PostName = string.Empty;
|
|
SaveName = string.Empty;
|
|
FileLength = 0;
|
|
UploadPath = string.Empty;
|
|
MaxLength = 200;
|
|
ExtName = string.Empty;
|
|
if (context == null)
|
|
context = new HttpContextWrapper(HttpContext.Current);
|
|
}
|
|
|
|
public FileUpload(string type)
|
|
{
|
|
Type = type;
|
|
PostName = string.Empty;
|
|
SaveName = string.Empty;
|
|
FileLength = 0;
|
|
UploadPath = string.Empty;
|
|
MaxLength = 5*1024;
|
|
ExtName = string.Empty;
|
|
if (context == null)
|
|
context = new HttpContextWrapper(HttpContext.Current);
|
|
}
|
|
|
|
private string CreateForderName()
|
|
{
|
|
return DateTime.Now.ToString("yyyyMM");
|
|
}
|
|
|
|
private string CreateFileName()
|
|
{
|
|
//return DateTime.Now.ToString("yyyyMMssHHmmss");
|
|
return String.Format("{0:yyyyMMssHHmmss}.{1}", DateTime.Now, ExtName);
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
HttpPostedFileBase upfile = context.Request.Files[0];
|
|
PostFile file = new PostFile(upfile);
|
|
Save(file);
|
|
}
|
|
|
|
public void Save(PostFile postFile)
|
|
{
|
|
if (string.IsNullOrEmpty(Type))
|
|
throw new ArgumentNullException("Type");
|
|
if (string.IsNullOrEmpty(UploadPath))
|
|
throw new ArgumentNullException("UploadPath");
|
|
if (MaxLength < 0)
|
|
throw new ArgumentOutOfRangeException("ManLength");
|
|
PostName = postFile.Name.Substring(postFile.Name.LastIndexOf('\\') + 1);
|
|
string extName = PostName.Substring(PostName.LastIndexOf('.') + 1);
|
|
if (string.IsNullOrEmpty(extName))
|
|
throw new Exception("无扩展名信息,该文件不被支持.");
|
|
else
|
|
{
|
|
extName = extName.ToLower();
|
|
string[] fs = Type.Split('|');
|
|
if (!fs.Any(f => f == extName))
|
|
throw new Exception(string.Format("扩展名{0}不被系统支持,请重新上传.", extName));
|
|
ExtName = extName;
|
|
}
|
|
FileLength = postFile.Buffer.Length;
|
|
if (FileLength > MaxLength * 1024)
|
|
throw new Exception(string.Format("上传文件过大,系统限制为{0}KB,请重写上传.", MaxLength));
|
|
string rootPath = context.Server.MapPath(UploadPath);
|
|
if (!Directory.Exists(rootPath))
|
|
throw new Exception("系统错误:不存在该上传路径:" + UploadPath);
|
|
SavePath = CreateForderName();
|
|
//string savePath = rootPath + '\\' + SavePath;
|
|
string savePath = Path.Combine(rootPath, SavePath);
|
|
if (!Directory.Exists(savePath))
|
|
Directory.CreateDirectory(savePath);
|
|
SaveName = CreateFileName();
|
|
//postFile.SaveAs(savePath + "\\" + SaveName);
|
|
postFile.SaveAs(Path.Combine(savePath, SaveName));
|
|
}
|
|
|
|
}
|
|
} |