Mar*_*ark 24 c# asp.net file-upload
我已将文件上传添加到我的asp.net网站.但是,我想限制用户可以选择的文件类型.例如,我只有用户选择mp3文件.如何在文件上传中添加过滤器,以便仅显示所选文件夹中的mp3文件?
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnAudUpload" Text="Upload" CssClass="btncssUpload" OnClick="btnAudUpload_Click" runat="server" />
Run Code Online (Sandbox Code Playgroud)
Mub*_*rek 34
使用RegularExpressionValidator可以帮助您.检查文件扩展名不需要服务器端代码.看看这段代码
<asp:RegularExpressionValidator ID="uplValidator" runat="server" ControlToValidate="FileUpload1"
ErrorMessage=".mp3, .mp4 & wma formats are allowed"
ValidationExpression="(.+\.([Mm][Pp][3])|.+\.([Mm][Pp][4])|.+\.([Ww][Mm][Aa]))"></asp:RegularExpressionValidator>
Run Code Online (Sandbox Code Playgroud)
记住,您现在要做的就是添加一个id为FileUpload1的文件上传控件.完成.您可以按F5查看效果
Eku*_*kus 23
直接在标记中使用accept属性(控件不支持它,但无论如何都会传递给客户端)
虽然您可以列出文件扩展名,例如:".xls,.xlsx",但不建议这样做,并且某些浏览器会对此感到困惑.
最好使用MIME类型(浏览器会将它们映射到适当的扩展名):
Upload MP3: <asp:FileUpload runat="server" accept=""audio/mpeg" />
Run Code Online (Sandbox Code Playgroud)
如果需要,请使用以逗号分隔的列表,例如:
Upload Excel files: <asp:FileUpload runat="server"
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
Run Code Online (Sandbox Code Playgroud)
支持的浏览器和更多信息:http://www.w3schools.com/tags/att_input_accept.asp
下面的常见MIME类型(http://www.sitepoint.com/web-foundations/mime-types-summary-list/的快照)
.au audio/basic
.avi video/msvideo, video/avi, video/x-msvideo
.bmp image/bmp
.bz2 application/x-bzip2
.css text/css
.dtd application/xml-dtd
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
.es application/ecmascript
.exe application/octet-stream
.gif image/gif
.gz application/x-gzip
.hqx application/mac-binhex40
.html text/html
.jar application/java-archive
.jpg image/jpeg
.js application/x-javascript
.midi audio/x-midi
.mp3 audio/mpeg
.mpeg video/mpeg
.ogg audio/vorbis, application/ogg
.pdf application/pdf
.pl application/x-perl
.png image/png
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppt application/vnd.ms-powerpointtd>
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.ps application/postscript
.qt video/quicktime
.ra audio/x-pn-realaudio, audio/vnd.rn-realaudio
.ram audio/x-pn-realaudio, audio/vnd.rn-realaudio
.rdf application/rdf, application/rdf+xml
.rtf application/rtf
.sgml text/sgml
.sit application/x-stuffit
.sldx application/vnd.openxmlformats-officedocument.presentationml.slide
.svg image/svg+xml
.swf application/x-shockwave-flash
.tar.gz application/x-tar
.tgz application/x-tar
.tiff image/tiff
.tsv text/tab-separated-values
.txt text/plain
.wav audio/wav, audio/x-wav
.xlam application/vnd.ms-excel.addin.macroEnabled.12
.xls application/vnd.ms-excel
.xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xml application/xml
.zip application/zip, application/x-compressed-zip
Run Code Online (Sandbox Code Playgroud)
如上所述,它不可能开箱即用.
我找到的更简单的解决方案:使用RegularExpressionValidator检查文件扩展名.不需要JavaScript或外部库.当然,它只检查扩展名,而不是文件内容(您必须使用服务器端代码并检查字节),并且不会更改文件夹浏览器中显示的文件列表.
<asp:RegularExpressionValidator ControlToValidate="FileUpload1" ValidationExpression="^.*\.(mp3|MP3)$" runat="server" />
Run Code Online (Sandbox Code Playgroud)
默认文件上传器没有任何选项,但您可以使用Uploadify等工具来实现此目标。然而,如果这是一个问题的话,它是基于闪存的。您可以在他们的有限文件类型演示中尝试一下。
如果您不想使用 flash,最简单的方法是通过 javascript 或在服务器端自行进行验证,并在文件类型无效时通知用户。
file-input-accept-attribute-is-it-useful是另一个类似的问题,可能有一些有用的信息。