65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 和 ASP.NET MVC 中的文件上传器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.60/5 (3投票s)

2009年4月15日

CPOL

2分钟阅读

viewsIcon

29121

在 ASP.NET 和 ASP.NET MVC 中上传文件的类

这是一个在 ASP.NET 和 ASP.NET MVC 中上传文件的类。

引言

上传文件是许多 Web 应用程序的常见场景和重要组成部分。在这里,我创建了一个可以轻松上传文件的类。上传器类会自动验证所有必需项,例如,上传目录验证、文件扩展名等。

背景

关于在 ASP.NET 中上传文件,有许多资源。但我感觉需要一个更简单且可定制的类,并且可以执行验证、向文件添加前缀和/或后缀、加密文件名、允许选择覆盖现有文件等。您只需设置所需的必要属性即可。您可以在您的 ASP.NET 以及 ASP.NET MVC 应用程序中使用它。

使用此类

这里,我给出一个使用此类的示例。

    Uploader uploader = new Uploader();

    uploader.UploadPath     = Server.MapPath("~\Content\Uploads");
    uploader.IsLowerName    = true;
    uploader.IsEncryptName  = false;

    uploader.Prefix = "Hello_";
    uploader.Suffix = "_Boom";

    uploader.AllowedExtensions.Add(".jpg");
    uploader.AllowedExtensions.Add(".jpeg");
    uploader.AllowedExtensions.Add(".gif");
    uploader.AllowedExtensions.Add(".png");

    bool success = uploader.DoUpload("MyFile");

    if (success)
    {
        //TODO: Code to handle success
    }
    else
    {
        //TODO: Code to handle failure
    }

在这里,MyFile 是文件输入类型的名称。

 <!-- In Html -->
<input type="file" name="MyFile" id="MyFile" />
<%--In tradition ASP.NET --%>
<asp:FileUpload ID="MyFile" runat="server" />

DoUpload() 方法有一个重载。您可以像上面一样传递文件输入的名称,或者传递 HttpPostedFile 文件对象,如下所示

HttpPostedFile postedFile = HttpContext.Current.Request.Files["MyFile"] as HttpPostedFile;
uploader.DoUpload(postedFile);

还有一个方法,您可以通过提供文件输入的名称来获取 HttpPostedFile 对象。

HttpPostedFile postedFile = uploader.GetHttpPostedFile("MyFile");
uploader.DoUpload(postedFile);

配置设置

常规设置
UploadPath文件应上传到的完整路径,不包括文件名(必需)
UploadName应用于保存上传文件的名称,包含扩展名(可选)
前缀文件名前缀(可选)
后缀文件名后缀(可选)
 
条件设置
MinSize文件的最小大小,以字节为单位
MaxSize文件的最大大小,以字节为单位
IsOverwrite是否覆盖文件
IsEncryptName是否加密文件名
IsLowerName是否将文件名转换为小写
IsRemoveSpace是否从文件名中删除空格
AllowedExtensions允许的文件扩展名,带点号
IsRemoveSpace允许的 MIME 类型

 

对象属性
UploadErrorUploadError 类的对象。此类包含错误代码和错误消息。
PostedFilePostedFile 类的对象。此类包含已发布文件的不同信息。
UploadedFileUploadedFile 类的对象。此类包含已上传文件的不同信息。

 

UploadError 类的属性
代码错误代码
Message错误消息
 
PostedFile 和 UploadedFile 类的属性
FileName带扩展名的文件名
RawName不带扩展名的文件名
FileExtension文件扩展名,带点号
MimeType文件的 MIME 类型
FullPath包含文件名的绝对路径
FilePath不包含文件名的文件的绝对路径
FileSize文件的大小,以字节为单位
IsImage文件是否为图像

如果您的上传未成功,您可以通过 UploadError 属性获取错误代码和消息。例如

string erroCode    = uploader.UploadError.Code;
string errorMessage = uploader.UploadError.Message;

请记住,这里的错误代码不是实际的 http 错误号。我使用了 1 到 10 之间的数字,以便可以自定义相应的消息。

另一方面,如果您的上传尝试成功,您可以使用与发布文件以及已上传文件相关的信息,通过 PostedFileUploadedFile。例如

string previousFilename = uploader.PostedFile.FileName;
string previousFilePath = uploader.PostedFile.FilePath;

string uploadedFilename = uploader.UploadedFile.FileName;
string uploadedFilePath = uploader.UploadedFile.FilePath;

祝您使用愉快!

© . All rights reserved.