日期:2014-05-17  浏览次数:20646 次

jsp如何获取上传的文件
如何获取上传的文件?也就是<input type="file"/>中的文件?
用request.getInputStream吗?
如果我的html表单中还有其它数据或者存在多个文件,那么我应该怎么获得这些数据以及如何获得多个文件

------解决方案--------------------
JSP利用组件实现文件上传
一、首先下载jspsmartupload组件
http://www.jspsmart.com 或
http://www.hoodle.net/other/zujian/jspSmartUpload.zip
二、将目录jspsmartupload/wib_inf/classes中的内容拷贝到网站所在的实际目录中的web_inf中lib下
三、上传界面的代码如下:(文件名:insert.htm)
<FORM METHOD="POST" ACTION=" uploadfile.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
主题:<input type="text" name="text1" ><br>
<INPUT type=submit value=写 完 name=ok>
</form>

五、uploadfile.jsp的代码如下:
<%@ page language="java" import="com.jspsmart.upload.*"%>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<HTML>
<BODY BGCOLOR="white">
<H1>hoodle-jsp</H1>
<HR>
<%
int count=0;
mySmartUpload.initialize(pageContext);
'文件上传
mySmartUpload.upload();
'获得文本的内容
String content = mySmartUpload.getRequest().getParameter("text1");
'显示文本的内容
out.println(content);
'上传的情况统计
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing()) {
myFile.saveAs("/upload/" + myFile.getFileName());
out.println("FieldName = " + myFile.getFieldName() + "<BR>");
out.println("Size = " + myFile.getSize() + "<BR>");
out.println("FileName = " + myFile.getFileName() + "<BR>");
out.println("FileExt = " + myFile.getFileExt() + "<BR>");
out.println("FilePathName = " + myFile.getFilePathName() + "<BR>");
out.println("ContentType = " + myFile.getContentType() + "<BR>");
out.println("ContentDisp = " + myFile.getContentDisp() + "<BR>");
out.println("TypeMIME = " + myFile.getTypeMIME() + "<BR>");
out.println("SubTypeMIME = " + myFile.getSubTypeMIME() + "<BR>");
count ++;
}
}
out.println("<BR>" + mySmartUpload.getFiles().getCount() + " files could be uploaded.<BR>");
out.println(count + " file(s) uploaded.");
%>
</BODY>
</HTML>

------解决方案--------------------
楼主可以到 Apache Commons 下去看看一个称为 FileUpload 的组件,用于文件上传很方便,几行代码就能搞定的。
------解决方案--------------------
JSP不方便直接使用文件上传,可以借助其他组件实现文件上传功能。

1. 使用FileUpload组件,提交后可以使用FileUpload提供的API获得提交过来的文件内容,具体用法网上有很多说明。

2. 使用JSPSmartUpload组件也可以实现文件上传,具体用法也可网上搜索。

3. 当然如果你用过Struts的话可以直接使用Struts提供的FormFile类来接受文件内容,前提是项目的WEB层中使用了Struts框架。具体怎么做网上应该也能搜的到,希望能开启你的思路。