无法在 Java Servlet 上上传文件
Unable to Upload Files On Java Servlet
我想在 Java Servlet 上上传文件,但是当我 运行 我的 upload.jsp 和 select 文件上传到被上传,当我点击 提交 它显示 HTTP 状态 404 – 未找到
upload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>HELLO WORLD</h2>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<input type="submit">
</form>
</body>
</html>
FileUpload.java
package com.servlet;
import java.io.*;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.*;
@WebServlet("/FileUpload")
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
List<FileItem> multifiles = sf.parseRequest(request);
for(FileItem item : multifiles) {
item.write(new File("C:/TurboC++/Disk/TurboC3/BIN/Java/Eclipse/Upload-Servlet/" +item.getName()));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
> 抱歉发布了整个代码,但我无法解决它。
您的 html 表单元素的 action
属性值是 URL 到 servlet 的值,该 servlet 将接收来自您提交表单的 http 请求。您的 action
属性设置为 upload
。看来您确实希望将其设置为 /FileUpload
.
请注意,将其设置为 JUST "/FileUpload" 可能不够,但您应该试一试。您可能需要指定整个 URL(例如 http://server.com/context/FileUpload
),或者指定相对于 jsp 页面的 URL(例如 /FileUpload
)。
我想在 Java Servlet 上上传文件,但是当我 运行 我的 upload.jsp 和 select 文件上传到被上传,当我点击 提交 它显示 HTTP 状态 404 – 未找到
upload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>HELLO WORLD</h2>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<input type="submit">
</form>
</body>
</html>
FileUpload.java
package com.servlet;
import java.io.*;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.*;
@WebServlet("/FileUpload")
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
List<FileItem> multifiles = sf.parseRequest(request);
for(FileItem item : multifiles) {
item.write(new File("C:/TurboC++/Disk/TurboC3/BIN/Java/Eclipse/Upload-Servlet/" +item.getName()));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
> 抱歉发布了整个代码,但我无法解决它。
您的 html 表单元素的 action
属性值是 URL 到 servlet 的值,该 servlet 将接收来自您提交表单的 http 请求。您的 action
属性设置为 upload
。看来您确实希望将其设置为 /FileUpload
.
请注意,将其设置为 JUST "/FileUpload" 可能不够,但您应该试一试。您可能需要指定整个 URL(例如 http://server.com/context/FileUpload
),或者指定相对于 jsp 页面的 URL(例如 /FileUpload
)。