现在位置首页 / 项目实战 /正文

Juery+asp.net上传图片插件及图片上传格式像素限制

作者: IT小兵 | 2014年9月30日| 热度:℃ | 评论: |参与:

在前几天分享了好几个jquery的上传插件,参考:

[基于bootstrap样式的asp.net+plupload多图片文件上传预览及展示]

[jquery好用的上传插件:Plupload使用说明和完整demo]

[jquery插件--ajaxfileupload.js上传文件原理分析]

[ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法]

[asp.net+jquery.upload实现多文件上传+进度条加遮罩层]

今天分享一下怎么对上传文件类型进行过滤,以及对图片像素的判断处理。

1、在html中实现对文件类型的过滤

所有上传插件都是基于iframe+file input控件实现,除了flash和siverlight的控件方式的。

file input的时候是支持对文件类型进行过滤的。过滤类型是:

<input type="file" accept="application/msword" ><br><br>accept属性列表<br>

1.accept="application/msexcel"
2.accept="application/msword"
3.accept="application/pdf"
4.accept="application/poscript"
5.accept="application/rtf"
6.accept="application/x-zip-compressed"
7.accept="audio/basic"
8.accept="audio/x-aiff"
9.accept="audio/x-mpeg"
10.accept="audio/x-pn/realaudio"
11.accept="audio/x-waw"
12.accept="image/gif"
13.accept="image/jpeg"
14.accept="image/tiff"
15.accept="image/x-ms-bmp"
16.accept="image/x-photo-cd"
17.accept="image/x-png"
18.accept="image/x-portablebitmap"
19.accept="image/x-portable-greymap"
20.accept="image/x-portable-pixmap"
21.accept="image/x-rgb"
22.accept="text/html"
23.accept="text/plain"
24.accept="video/quicktime"
25.accept="video/x-mpeg2"
26.accept="video/x-msvideo"

这个就可以实现选择具体的数据类型,但是有兼容问题,我在测试的时候只有Opera,Chrome能用,火狐和IE都不兼容

好吧,就在这里测试一下吧:

我只想要word

在这里如果想支持多种类型的话,比如金山的office和microsoft的office的不同扩展名,这样的话可以在accept里面放置多个属性就可以了:

<form> <input type="file" name="pic" id="pic" accept="image/gif, image/jpeg" /></form>

如果不限制图像的格式,可以写为:accept="image/*"。同样是可以的

好的,测试一下:

我只想要gif、bmp

好吧,只要是图片我就要了

嗯,测试成功,用Opera,Chrome能用,因为accept也是html5的新特性,所以火狐和IE的支持就显得单薄了,这样还是让我们等待他们的接受把
测试了好久,发现gif和bmp一起的时候并不是能取得他们的并集,仔细观察以后是按写入顺序排列了一下他们的“文件选择类型”:

就像是下面的图片一样:

我们如果不定义input file的格式的时候,那么文件类型的地方就是全部文件*.*,如果我们定义了自己的,那么文件类型就会和我们选中的一样,但是这时候我们如果想看别的文件的时候还是可以通过文件类型的下拉框,去选择自己额外喜欢的类型的,简单的说,它就是起到了一个简单的按照我们的主观意愿筛选的作用,同时我们如果不是选择的image/*而是好几个并列的话就会按照上面的情况分别得排列出来,比如图上的我input就是这个样子的:

<form> <input type="file" name="pic" id="pic" accept="image/gif, image/x-ms-bmp, image/bmp" /></form>

2、C#中对图片进行大小验证和像素判断

 public static bool CheckFileTypeLimit(string type,string filepath)
        {
            bool isok = false;
            if (File.Exists(filepath))
            {
                FileInfo fileinfo = new FileInfo(filepath);
                switch (type)
                {
                    case "image"://大小: 不超过1M,    格式: bmp, png, jpeg, jpg, gif 
                        if (  fileinfo.Extension == ".JPG"
                                  || fileinfo.Extension == ".jpg"   
                            && fileinfo.Length / 1024 / 1024 < 1
                            )
                        {
                            isok = true;
                        }
                        break;
                    case "voice"://大小: 不超过5M, 长度:不超过60s, 格式: mp3, wma, wav, amr 
                        if (( fileinfo.Extension == ".amr")
                         && fileinfo.Length / 1024/1024 < 2
                         )
                        {
                            isok = true;
                        }
                        break;
                    case "video"://大小: 不超过20M, 格式: rm, rmvb, wmv, avi, mpg, mpeg, mp4
                        if ((  fileinfo.Extension == ".mp4" 
                      )
                       && fileinfo.Length / 1024 / 1024 < 10
                       )
                        {
                            isok = true;
                        }
                        break;
                    case "file"://大小: 不超过10M,    格式: txt, xml, pdf, zip, doc, ppt, xls, docx, pptx, xlsx 
                        if ((fileinfo.Extension == ".txt"
                       || fileinfo.Extension == ".xml"
                             || fileinfo.Extension == ".pdf" || fileinfo.Extension == ".zip" || fileinfo.Extension == ".doc"
                             || fileinfo.Extension == ".ppt" || fileinfo.Extension == ".docx" || fileinfo.Extension == ".pptx"
                                          || fileinfo.Extension == ".xlsx"
                             || fileinfo.Extension == ".xls")
                       && fileinfo.Length / 1024 / 1024 < 10
                       )
                        {
                            isok = true;
                        }
                        break;
                    default:
                        break;
                }
            }
            return isok;
        }

像素判断:

string s = @"C:\Users\nonocast.DEV.000\Desktop\bird.jpg";
var sh = new Shell32.ShellClass();
Shell32.Folder folder = sh.NameSpace(Path.GetDirectoryName(s));
Shell32.FolderItem item = folder.ParseName(@"bird.jpg");
var sizestr = folder.GetDetailsOf(item, 31);
Regex r = new Regex(@"(\d+)[^\d]+(\d+)");
if(r.IsMatch(sizestr)){
    var m = r.Match(sizestr);
    Console.WriteLine(Convert.ToInt32(m.Groups[1].Value));
    Console.WriteLine(Convert.ToInt32(m.Groups[2].Value));
}


点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:[email protected]

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:[email protected]

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询