如何在ASP.NET中使用文件上传限制文件类型为图像类型

3

我正在使用文件上传,希望限制在对话框中显示的文件仅为图像。也就是说,对话框中的“文件类型”应该是.jpg、.jpeg、.gif、.bmp、.png。

5个回答

2

你不能这样做。 Web浏览器不允许你过滤文件类型或设置文件上传对话框的默认目录。

正如Darin和Chris所建议的那样,一旦用户选择了文件,你可以使用javascript解析文件名,并在文件看起来不是正确类型时向用户发出警报。根据你将要对文件进行的操作,你应该考虑在服务器端执行某些操作以验证文件是否为有效图像,而且不是恶意文件

另外,你可以尝试使用Silverlight的OpenFileDialog,甚至是Flash控件。请参见http://www.plupload.comhttp://www.uploadify.com/http://swfupload.org/等网站。


0

我知道这很老了,但在ASP中使用文件上传。如果我想锁定内容为某种类型,比如图像或视频,我只需对内容类型进行包含操作。

if (FileUpload1.HasFile) {

    if (FileUpload1.PostedFile.ContentType.Contains("image/")) {
//rest of your logic
    }

}

0

我尝试了REV,但有时它不接受所提到的扩展名(如jpg/gif/bmp/png)。因此,我想在对话框中过滤内容。 - Yajuvendra Vant
你对这个对话框没有太多的控制权。你可以尝试使用Flash来上传其他解决方案。 - Darin Dimitrov

0
你需要以两种方式来实现:一种是在客户端上为了方便使用,另一种是在服务器上进行验证以防止用户禁用客户端验证。这两种方法都在这里中有描述。

-1

这个函数用于检查用户想要上传的文件是否为有效的文件类型。

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;
   }

这段程序代码在文件上传之前是无法运行的,这会浪费客户/用户的时间。 - BerggreenDK
你能解释一下吗?这是关于服务器端检查的,我的代码没有任何问题地运行。 - Nick Kahn
该代码在客户端等待上传完成后再进行检查。它并不能帮助客户在浏览器中的OpenFile对话框中选择文件。假设我想上传一个20 MB的文件,那么在我收到您的代码的实际错误信息之前,我必须等待20 MB上传完成。 - BerggreenDK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接