【发布时间】:2011-03-12 06:51:27
【问题描述】:
我正在使用文件上传,我想将对话框中显示的文件限制为仅图像。也就是说对话框中的'Files of Type'应该是.jpg,.jpeg,.gif,.bmp,.png
【问题讨论】:
标签: asp.net file-upload
我正在使用文件上传,我想将对话框中显示的文件限制为仅图像。也就是说对话框中的'Files of Type'应该是.jpg,.jpeg,.gif,.bmp,.png
【问题讨论】:
标签: asp.net file-upload
You can't. Web 浏览器 don't allow 您可以执行诸如按文件类型过滤列表或设置文件上传对话框的默认目录之类的操作。
正如 Darin 和 Chris 所建议的,一旦用户选择了一个文件,您就可以使用 javascript 来解析文件名并在文件看起来不正确时提醒用户。根据您要对文件执行的操作,您应该考虑在服务器端做一些事情来验证文件是有效的图像和not something bad 。
或者,您可以考虑使用 Silverlight 的 OpenFileDialog 或者甚至是 Flash 控件。请参阅http://www.plupload.com、http://www.uploadify.com/、http://swfupload.org/ 等...
【讨论】:
【讨论】:
您需要通过两种方式执行此操作:一种在客户端上以方便使用,另一种在服务器上以防止用户禁用客户端验证。这两种方法都被描述为here。
【讨论】:
我知道这已经很老了,但是在 asp 中使用 Fileuploads。如果我想将内容锁定为某种类型,例如图像或视频,我只需在内容类型上执行 contains。
if (FileUpload1.HasFile) {
if (FileUpload1.PostedFile.ContentType.Contains("image/")) {
//rest of your logic
}
}
【讨论】:
此函数用于检查用户要上传的文件是否是有效的文件类型。
private bool IsValidFile(string filePath)
{
bool isValid = false;
string[] fileExtensions = { ".BMP", ".JPG", ".PNG", ".GIF", ".JPEG" };
for (int i = 0; i < fileExtensions.Length; i++)
{
if (filePath.ToUpper().Contains(fileExtensions[i]))
{
isValid = true; break;
}
}
return isValid;
}
此功能用于检查文件类型和文件大小。如果文件无效,则会返回错误消息。
private string ValidateImage(HttpPostedFile myFile)
{
string msg = null;
int FileMaxSize = Convert.ToInt32(ConfigurationManager.AppSettings["FileUploadSizeLimit"].ToString());
//Check Length of File is Valid or Not.
if (myFile.ContentLength > FileMaxSize)
{
msg = msg + "File Size is Too Large.";
}
//Check File Type is Valid or Not.
if (!IsValidFile(myFile.FileName))
{
msg = msg + "Invalid File Type.";
}
return msg;
}
【讨论】: