jsp文件上传问题

时间:2011-02-22 10:25:13

标签: java jsp file-upload

我的代码在本地计算机上正常运行。但是当我将它上传到服务器时,它无法正常工作。

这是我的代码

html文件

<html>
<head>
<form action="fileUpload.jsp" name="upform" enctype="multipart/form-data">
<table width="60%" border="0" cellspacing="1" cellpadding="1" align="center" class="style1">
<tr>
<td align="left"><b>Select a file to upload :</b></td>
</tr>
<tr>
<td align="left">
<input type="file" name="filename" size="50">
</td>
</tr>
<tr>
<td align="left">
<input type="hidden" name="todo" value="upload">
<input type="submit" name="Submit" value="Upload">
<input type="reset" name="Reset" value="Cancel">
</td>
</tr>
</table>
</form>
</body>
</html>

fileUpload.jsp

<%@ page import="java.util.*,java.io.*"%>
<%
String path=request.getParameter("filename");
String newPath="";
int count=0;
try{
if(path!=null)
{
ArrayList arr=new ArrayList();
StringTokenizer st=new StringTokenizer(path,"\\");
while(st.hasMoreTokens())
{
arr.add(count,st.nextToken());
count++;
}
// create ur own path

newPath="/home/sumesh/workspace/TaskManager/WebContent/Pages/Files/"+arr.get(count-1);

int c;
FileInputStream fis=new FileInputStream(path);
FileOutputStream fos=new FileOutputStream(newPath);
while((c=fis.read())!=-1)
{
fos.write((char)c);
}
}
catch (Exception err){
    out.println(err);
}
}
%>

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

首先,你不应该实现这是一个JSP,而是在一个Servlet(或你喜欢的MVC框架的一个动作:Stripes,Spring MVC,Struts等)中,JSP仅用于presentatino代码,使用HTML ,JSTL和自定义JSP标记。

要处理文件上传,您应该使用专用API,例如Apache commons FileUpload,因为servlet API不直接支持多部分请求。我所知道的所有MVC框架还包括对文件上传的支持。

现在解释它在本地计算机上运行的原因:当您打开输入流到请求中作为参数发送的路径时,使用客户端计算机上文件的路径打开输入流即可。因为在这种情况下,服务器机器也是客户端机器,它的工作原理。但是,只要服务器不再是客户端,它就不再起作用了。