【问题标题】:How to restrict the files to image type using file upload in asp.net如何使用asp.net中的文件上传将文件限制为图像类型
【发布时间】:2011-03-12 06:51:27
【问题描述】:

我正在使用文件上传,我想将对话框中显示的文件限制为仅图像。也就是说对话框中的'Files of Type'应该是.jpg,.jpeg,.gif,.bmp,.png

【问题讨论】:

    标签: asp.net file-upload


    【解决方案1】:

    You can't. Web 浏览器 don't allow 您可以执行诸如按文件类型过滤列表或设置文件上传对话框的默认目录之类的操作。

    正如 Darin 和 Chris 所建议的,一旦用户选择了一个文件,您就可以使用 javascript 来解析文件名并在文件看起来不正确时提醒用户。根据您要对文件执行的操作,您应该考虑在服务器端做一些事情来验证文件是有效的图像和not something bad

    或者,您可以考虑使用 Silverlight 的 OpenFileDialog 或者甚至是 Flash 控件。请参阅http://www.plupload.comhttp://www.uploadify.com/http://swfupload.org/ 等...

    【讨论】:

      【解决方案2】:

      您可以使用regular expression validator

      【讨论】:

      • 我试过 REV,但有时它不接受提到的扩展名(如 jpg/gif/bmp/png)。所以我想过滤对话框中的内容。
      • 您对此对话框没有太多控制权。您可以尝试使用 Flash 的其他上传解决方案。
      【解决方案3】:

      您需要通过两种方式执行此操作:一种在客户端上以方便使用,另一种在服务器上以防止用户禁用客户端验证。这两种方法都被描述为here

      【讨论】:

        【解决方案4】:

        我知道这已经很老了,但是在 asp 中使用 Fileuploads。如果我想将内容锁定为某种类型,例如图像或视频,我只需在内容类型上执行 contains。

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 在文件上传之前不会运行,浪费客户/用户的时间。
          • 你能给我解释一下吗?这是在服务器端检查,我的代码运行没有任何问题
          • 此代码在客户等待上传后进行检查。它不能帮助客户在浏览器中客户端的 OpenFile 对话框中选择文件。假设我要上传一个 20 Mb 的文件,然后我必须等到 20 Mb 上传,然后才能从您的代码中得到实际错误。
          猜你喜欢
          • 2012-01-19
          • 2019-12-21
          • 2016-04-11
          • 2021-02-07
          • 2011-11-11
          • 2010-12-06
          • 1970-01-01
          • 2011-09-21
          • 1970-01-01
          相关资源
          最近更新 更多