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






2.60/5 (3投票s)
在 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 类型 |
对象属性 | |
UploadError | UploadError 类的对象。此类包含错误代码和错误消息。 |
PostedFile | PostedFile 类的对象。此类包含已发布文件的不同信息。 |
UploadedFile | UploadedFile 类的对象。此类包含已上传文件的不同信息。 |
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 之间的数字,以便可以自定义相应的消息。
另一方面,如果您的上传尝试成功,您可以使用与发布文件以及已上传文件相关的信息,通过 PostedFile
和 UploadedFile
。例如
string previousFilename = uploader.PostedFile.FileName;
string previousFilePath = uploader.PostedFile.FilePath;
string uploadedFilename = uploader.UploadedFile.FileName;
string uploadedFilePath = uploader.UploadedFile.FilePath;
祝您使用愉快!