jsp如何限制上传文件的类型

要从扩展名和mimi类型两方面来考虑的,我只知道从扩展名限制,不知道如何获得上传文件的mimi类型并加以控制。望高手能够帮我解答,谢谢。
我不想依赖第三方上传组件中的API,因为并非每一个上传组件都集成有过滤上传文件功能,我要通过上传文件的mime类型过滤上传文件(不是通过扩展名),一个文件的mime类型是存在其文件头中的标识信息,扩展名修改后它的mime类型是不会变的呀,很多组件都没有这个功能。

你可以使用上传文件的插件的相关API来获取上传文件的扩展名,
不知道你用的上传文件的插件是哪个?
这里举个SmartUpload的例子:

<jsp:useBean id="smart" scope="page" class="com.jspsmart.upload.SmartUpload"/>
<%
String ext = smart.getFiles().getFile(0).getFileExt() ;
//取得所上传的第一个文件的扩展名.
%>
=============================================================

那你的上传文件是有使用
<input type="file" name="fileName">
这样的的HTML标签吧?

如果是这样的话,当你提交后,
你可以使用下面的语句来获取文件的扩展名,然后写相应的扩展名限制语句

<%
String fullFileName = request.getParameter("fileName");
int index = fullFileName.lastIndexOf('.');
String ext = fullFileName.substring(index+1);
%>
<br>
<%=ext%>

====================================================

那你所上传的MIME类型是怎么获取的?
不也就是Web容器根据你所上传的文件的扩展名在其相关的xml配置文件中(比如说Tomcat的全局web.xml)中的
<mime-mapping>
<extension>xxx</extension>
<mime-type>xxx/xxx</mime-type>
</mime-mapping>
中获取mime类型的吗?
说到底,mime类型的判断还是通过扩展名来实现的,
那么你可以在你的Web容器的相关配置文件中设置允许被上传的mime映射,
然后在处理上传文件的时候,在相关代码中写限制的代码,如果此上传文件的类型不在mime映射范围内,就不进行保存处理.

=================================================================
明白你的意思了,你是想通过所上传文件的文件头信息中的相关信息来获取此文件的MIME类型,然后再进行相关的限制吧?

=====================================
参见http://zhidao.baidu.com/question/100623013.html的回答
我觉得你不用其他的上传组件,至少你做Web项目要用Struts吧,
Struts中的org.apache.struts.upload.FormFile这个接口可以对上传的文件进行封装,然后通过其getContentType()返回的是一个所上传文件的MIME类型字符串,我测试过了,即使所上传文件没有扩展名,这个方法也可根据所上传的文件取到其MIME类型,这就可以根据这个方法返回的字符串值,在相应的业务逻辑中写限制的代码了吧.
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-08
用js脚本做判断,取得file组件的value,判断后缀
第2个回答  2009-06-19
不用工具包的话,俺知道两种方法能判断.
第一种就是用JS直接在客户端判断截断掉.或AJAX把后缀提交到服务器再判断.但这样不安全.
第二种就是在服务器端判断了.
我网站的代码:
前面是ServletInputStream in = request.getInputStream();然后传给后面.页面是提交了一个文件.
接收类这么获取:

public void dohead(ServletInputStream in) throws Exception
{
int lwa=0;
int i=in.read();
while (i != -1) {
if(i=='\r') lwa++;if(lwa>=4) break;
System.out.print((char)i);
i = in.read();

}
in.read();
}

上面是取得request.getInputStream的二进制文件流的头部.结果如下[1.JPG]:
-----------------------------7d935b1e401de
Content-Disposition: form-data; name="f"; filename="C:\Documents and Settings\Administrator\My Documents\My Pictures\1.JPG"
Content-Type: image/pjpeg

我想你要的就是Content-Type: image/pjpeg

附上页面的代码...
<html>
<head>
<title>upload</title>
<head>
<body>
<form action="Upload.lw" enctype="multipart/form-data" method=post>
<br/>
file<input type="file" name="f" />
<br/>
<input type ="submit" value="submit" />
</form>
</body>
</html>

以上是获得打开类型的方法,同样也可以得到后缀名...可能你获得后缀名的时候没注意...mime类型就在他后面...

参考资料:X度

jsp如何限制上传文件的类型
你可以使用上传文件的插件的相关API来获取上传文件的扩展名,不知道你用的上传文件的插件是哪个?这里举个SmartUpload的例子:<jsp:useBean id="smart" scope="page" class="com.jspsmart.upload.SmartUpload"\/> < String ext = smart.getFiles().getFile(0).getFileExt() ;\/\/取得所上传的第一个文件...

...小弟还有一个问题请教,如何来限制上传文件的类别和大小呢?还请大侠...
在 index.jsp中找到 98 行 在下面添加 这几句代码就可以限制文件类别和大小 file_size_limit : "100 MB",file_types : "*.png;*.jpg;*.bmp",\/\/选择文件类型 file_types_description : "image file", \/\/选择文件时的前缀

JSP实现图片上传大小限制以及个人相册上传空间限制,数据库SQL server...
直接设置数据库大小和文件大小就可以了

Java web文件上传怎么限制文件类型
你好,jsp页面: action: \/\/ 获取文件类型和文件名,后缀必须为ContentType 和FileName private String[] uploadContentType; private String[] uploadFileName; set...get.

Java web文件上传怎么限制文件类型
request; MultipartFile file = mrequest.getFile("file"); if (file != null && !file.isEmpty()) { \/\/ 获得文件类型(可以判断如果不是指定类型,禁止上传) String contentType = file.getContentType();

Jsp挖掘(7)-JSP上传漏洞
在探讨JSP上传漏洞时,核心问题在于文件上传过程中未进行足够的安全校验,尤其是对上传文件后缀的类型检查不足。攻击者借此机会上传恶意文件,如jsp等,以进行Webshell攻击。防范此类漏洞的关键在于:一、上传漏洞的解决策略解决方法主要包括限制文件后缀名校验和限制文件大小。限制后缀名意味着只允许特定类型文件...

...fileupload组件如何限制上传文件的类型,菜鸟勿扰。
你上面的代码就可以实现 只要在write之前执行的判断 那文件就没有上传 而文件名那些事从请求的头信息中获得的 而并不是真正的文件,文件上传时分开的两步做的 一、先发请求 以及所要上传文件的头信息 二 服务器确认文件无误 写入服务器磁盘 write这个方法相当于是另外一个连接 只有调用了write ...

struts2文件上传中,如何限制上传的文件类型
defaultStack"> <!-- 改变当前文件运行上传的类型 --> image\/jpeg,image\/jpg <!-- 允许的文件后缀 --> jpg,jpeg,gif <\/interceptor-ref> <result>\/index.jsp<\/result> <\/action>

html设置文件上传类型,如何设置在选择文件的时候只能选图片
1、设置一个文件上传选项,删选一下只能上传图片或者详细的限制只能上传图片的某些格式,代码如下:<!DOCTYPE html> 注释:Internet Explorer 9 以及更早的版本不支持 input 标签的 accept 属性。注释:鉴于安全考虑,该例不允许您上传文件。2、运行的结果是只能上传图片不能上传其他的文件,在弹出的...

jsp文件上传如何规定大小
这个要看你是使用什么开源上传控件了。一般的在action获取上传的对象,然后对象一般都获得当前上传大小的方法 然后进行判断 然后进行控制是否允许继续上传,不允许返回页面提示即可

相似回答