Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp文件上载问题_Java_Jsp_File Upload - Fatal编程技术网

Java jsp文件上载问题

Java jsp文件上载问题,java,jsp,file-upload,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"

我的代码在本地机器上运行良好。但当我把它上传到服务器时,它就不工作了

这是我的密码

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);
}
}
%>


如何解决这个问题?

首先,您不应该实现这是一个JSP,但在Servlet(或您最喜欢的MVC框架的一个动作:Stripes、Spring MVC、Struts等)中,JSP仅用于表示—无代码,使用HTML、JSTL和自定义JSP标记

为了处理文件上传,您应该使用专用的API,例如,因为ServletAPI不直接支持多部分请求。我所知道的所有MVC框架都支持文件上传


现在解释一下它在本地机器上工作的原因:当您打开请求中作为参数发送的路径的输入流时,您可以使用客户端机器上文件的路径打开一个输入流。因为在这种情况下,服务器机器也是客户机,所以它可以工作。但是一旦服务器不再是客户机,它就不再工作了

运行此代码时出现了什么错误?此路径是否适用于您部署它的服务器计算机::
/home/sumesh/workspace/TaskManager/WebContent/Pages/Files/
据我所知,您所说的“使用……打开输入流,它不再工作了”是什么意思?请详细说明一下好吗?@Herry Joy:OP从请求参数(
String path=request.getParameter(“filename”);
)中获取路径,然后用此路径打开一个文件输入流(
FileInputStream fis=new FileInputStream(path);
)。此代码使用客户端计算机上的文件路径来尝试读取上载的文件。在服务器上运行时,它不可能工作。嘿。。。它的
Harry
不是
Herry
。仔细阅读名称。@Harry:OP出于某种原因希望服务器机器能够立即访问客户端的本地磁盘文件系统,因此客户端特定的文件系统路径“正常”工作。这是完全错误的。另请参见技术解释和正确方法(注意,OP也忘记了POST方法,而这是与给定enctype结合使用所必需的)。感谢JB Nizet,正如您所说的jsp用于演示目的。。。。但在我的情况下,jsp是唯一的选择。。。如果您有任何编写jsp的示例,请与我们分享。。。