您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在Asp.Net中利用FileUpload類對(duì)文件進(jìn)行上傳,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
具體功能代碼如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web;
using System.Web.UI.WebControls;
using System.Collections;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace CSFramework.BLL
{
/// <summary>
/// 支持上傳的文件類型
/// </summary>
public enum UploadFileType
{
ArticleAttachment = 1,
Image = 2,
Video = 3,
All = 4
}
/// <summary>
/// 上傳文件管理類
/// </summary>
public class CFileUpload
{
private FileUpload _fileUpload;
private string _savePath;
private string _LastUploadedFile = string.Empty;
private bool _AutoGenFileName = false;
private bool _AutoGenWatermark = false;
public string LastUploadedFile { get { return _LastUploadedFile; } }
private string _Error = "";
private string PICTURE_FILE = "[.gif.png.jpeg.jpg]";
private string ZIP_FILE = "[.zip.rar]";
private string MUILT_MEDIA_FILE = "[.mpeg.mpg.fla.wma]";
private int IMG_MAX_WIDTH = 700;//指定寬度
private int IMG_MAX_HEIGHT = 0;//未指定高度
private int MAX_SIZE_UPLOAD = 1024;//最大支持上傳小于1MB的文件。
/// <summary>
/// 構(gòu)造器
/// </summary>
/// <param name="fileUpload">Asp.net FileUpload對(duì)象</param>
/// <param name="savePath">保存目錄,不包含文件名</param>
/// <param name="autoGenFileName">自動(dòng)生成文件名</param>
public CFileUpload(FileUpload fileUpload, string savePath, bool autoGenFileName, bool autoGenWatermark)
{
_savePath = savePath;
_fileUpload = fileUpload;
_AutoGenFileName = autoGenFileName;
_AutoGenWatermark = autoGenWatermark;
}
/// <summary>
/// 構(gòu)造器
/// </summary>
/// <param name="fileUpload">Asp.net FileUpload對(duì)象</param>
/// <param name="savePath">保存目錄,不包含文件名</param>
public CFileUpload(FileUpload fileUpload, string savePath)
{
_savePath = savePath;
_fileUpload = fileUpload;
}
/// <summary>
/// 上傳RAR文件
/// </summary>
public bool UploadRARFile()
{
return DoUpload(ZIP_FILE);
}
/// <summary>
/// 上傳視頻文件
/// </summary>
public bool UploadVideo()
{
return DoUpload(MUILT_MEDIA_FILE);
}
/// <summary>
/// 上傳圖片文件
/// </summary>
public bool UploadImage()
{
return DoUpload(PICTURE_FILE);
}
public bool UploadImage(int maxWidth, int maxHeight)
{
this.IMG_MAX_WIDTH = maxWidth;
this.IMG_MAX_HEIGHT = maxHeight;
return DoUpload(PICTURE_FILE);
}
/// <summary>
/// 上傳任何支持的文件
/// </summary>
public bool UploadAnySupported()
{
return DoUpload(PICTURE_FILE ZIP_FILE MUILT_MEDIA_FILE);
}
/// <summary>
/// 生成新的文件名
/// </summary>
private string GetNewFileName(string folder, string fileName)
{
if (_AutoGenFileName) //自動(dòng)生成32位GUID文件名
{
string ext = System.IO.Path.GetExtension(fileName);
string newfile = Guid.NewGuid().ToString().Replace("-", "") ext;
return folder newfile;
}
else
{
if (System.IO.File.Exists(folder fileName))
{
string ext = System.IO.Path.GetExtension(fileName);
string filebody = fileName.Replace(ext, "");
int x = 1;
while (true) //如果文件存在,生成尾部帶(x)的文件
{
string newfile = folder filebody "(" x.ToString() ")" ext;
if (!System.IO.File.Exists(newfile))
return folder filebody "(" x.ToString() ")" ext;
else
x ;
}
}
else
return folder fileName;
}
}
/// <summary>
/// 最大支持小于1MB的文件。
/// </summary>
private bool AllowMaxSize(int fileLength)
{
double kb = fileLength / 1024;
return (int)kb < MAX_SIZE_UPLOAD;
}
private bool DoUpload(string allowedExtensions)
{
try
{
bool fileOK = false;
if (!_fileUpload.HasFile) throw new Exception("沒(méi)有文件!"); //上傳控件中如果不包含文件,退出
// 得到文件的后綴
string fileExtension = System.IO.Path.GetExtension(_fileUpload.FileName).ToLower();
// 看包含的文件是否是被允許的文件后綴
fileOK = allowedExtensions.IndexOf(fileExtension) > 0;
if (!fileOK) throw new Exception("不支持的文件格式!");
//檢查上傳文件大小
fileOK = AllowMaxSize(_fileUpload.FileBytes.Length);
if (!fileOK) throw new Exception("圖片文件不能大于" MAX_SIZE_UPLOAD.ToString() "KB!");
try
{
// 文件另存在服務(wù)器指定目錄下
string savefile = GetNewFileName(_savePath, _fileUpload.FileName);
if (IsUploadImage(fileExtension))//保存圖片
{
System.Drawing.Image output = CImageLibrary.FromBytes(_fileUpload.FileBytes);
// 檢查圖片寬度/高度/大小
if (this.IMG_MAX_WIDTH != 0 && output.Width > this.IMG_MAX_WIDTH)
{
output = CImageLibrary.GetOutputSizeImage(output, this.IMG_MAX_WIDTH);
}
Bitmap bmp = new Bitmap(output);
this.CreateDir(Path.GetDirectoryName(savefile));
bmp.Save(savefile, output.RawFormat);
bmp.Dispose();
output.Dispose();
if (_AutoGenWatermark)
{
WatermarkImage genWatermark = new WatermarkImage();
genWatermark.DrawWords(savefile, AppConfig.Current.WatermarkMain,
AppConfig.Current.WatermarkDesc, float.Parse("0.2"));
}
}
else//其它任何文件
{
this.CreateDir(Path.GetDirectoryName(savefile));
_fileUpload.PostedFile.SaveAs(savefile);
}
_LastUploadedFile = savefile;
return true;
}
catch (Exception ex)
{
throw new Exception("上傳文件時(shí)發(fā)生未知錯(cuò)誤!" ex.Message);
}
}
catch (Exception ex)
{
_Error = ex.Message;
return false;
}
}
private void CreateDir(string dir)
{
if (Directory.Exists(dir) == false)
Directory.CreateDirectory(dir);
}
private bool IsUploadImage(string fileExtension)
{
bool isImage = PICTURE_FILE.IndexOf(fileExtension) > 0;
return isImage;
}
}
}
上述內(nèi)容就是怎么在Asp.Net中利用FileUpload類對(duì)文件進(jìn)行上傳,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。