out.println("<tr><td><FORM ENCTYPE='multipart/form-data'"+
"method='POST' action='ProcessUpload' ></td>"+
"<td><INPUT TYPE='file' NAME='mptest'></td>"+
"<td><INPUT TYPE='submit' VALUE='upload'></td>"+
"</FORM></tr>");
此代码可以帮助我上传文件,但问题是我点击上传后,我无法将上传的文件保存到特定的目录中。任何人都可以给出一些建议吗?
答案 0 :(得分:2)
上面的代码只是为上传按钮输出HTML。对于表单可能启动的任何上载请求,它不会执行任何操作。
我可以问你为什么不想使用Apache Commons FileUpload?不使用它意味着您需要实施RFC 1867。当实施已经存在时,浪费了大量的时间和精力。
答案 1 :(得分:0)
你必须编写另一个servlet(或一些CGI,jsp ......等)来从请求中检索文件并将其保存到你喜欢的任何地方:
答案 2 :(得分:0)
Apache Commons FileUpload是其他人建议的方式。如果你不想出于任何原因使用它,你也可以看看这个类,
这不如FileUpload强大,但它适用于简单的文件上传。
答案 3 :(得分:0)
如果你想使用Multipart请求,你需要编写processUpload servlet来处理这个问题,例如:
private String fileSavePath;
public void init(){
fileSavePath = getServletContext().getRealPath("/") + "data";
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
MultipartRequest mpr = new MultipartRequest(request, fileSavePath);
}
而且我真的不会像你的问题那样从servlet输出纯html - 尝试调度到jsp - 如果不需要别的东西就更好,只需使用普通的html。
答案 4 :(得分:0)
COS图书馆http://servlets.com/cos/(不是apache)
答案 5 :(得分:0)
我是第二个mlk的建议,并认为阅读Users Guide to Commons FileUpload将帮助您开始。它将处理接收文件,但您仍然必须告诉它“存储”它的位置。根据您的描述,听起来您希望用户选择“在哪里”存储文件。你必须自己写这部分。
我在servlet中一起攻击了一个快速的lister。所有其他评论都是正确的。在servlet中编写html并不是一个好主意,但这听起来像是一次很好的学习经历。
package somepackage;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DirectoryChooserServlet extends HttpServlet {
public DirectoryChooserServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Writer w = response.getWriter();
w.write("<html><body>");
String action = request.getParameter("action");
String directory = request.getParameter("directory");
String startDirectory = "/private";
if ("list".equals(action)) {
startDirectory = directory;
}
File dir = new File(startDirectory);
if (dir != null) {
w.write("<a href=\"?action=list&directory="+dir.getParentFile().getAbsolutePath()+"\">..</a><br/>");
for(File f: dir.listFiles()) {
if(f.isDirectory()) {
w.write("<a href=\"?action=list&directory="+f.getAbsolutePath()+"\">" + f.getName() + "</a><br/>");
}
}
}
w.write("</body></html>");
}
}