首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JSP / Servlet将文件上传到服务器?

如何使用JSP / Servlet将文件上传到服务器?

提问于 2017-12-15 15:48:39
回答 2关注 0查看 588

怎样才能使用JSP / Servlet上传文件到服务器?我试过这个:

代码语言:txt
复制
<form action="upload" method="post">
代码语言:txt
复制
    <input type="text" name="description" />
代码语言:txt
复制
    <input type="file" name="file" />
代码语言:txt
复制
    <input type="submit" />
代码语言:txt
复制
</form>

但是,我只获取文件名,而不是文件内容。当我添加 enctype="multipart/form-data"到<form>,然后request.getParameter()返回null。

在研究期间,我偶然发现了Apache Common FileUpload。我试过这个:

代码语言:txt
复制
FileItemFactory factory = new DiskFileItemFactory();
代码语言:txt
复制
ServletFileUpload upload = new ServletFileUpload(factory);
代码语言:txt
复制
List items = upload.parseRequest(request); // This line is where it died.

不幸的是,servlet抛出了一个没有明确信息和原因的异常。这里是堆栈跟踪:

代码语言:txt
复制
SEVERE: Servlet.service() for servlet UploadServlet threw exception
代码语言:txt
复制
javax.servlet.ServletException: Servlet execution threw an exception
代码语言:txt
复制
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
代码语言:txt
复制
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
代码语言:txt
复制
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
代码语言:txt
复制
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
代码语言:txt
复制
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
代码语言:txt
复制
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
代码语言:txt
复制
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
代码语言:txt
复制
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
代码语言:txt
复制
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
代码语言:txt
复制
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
代码语言:txt
复制
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
代码语言:txt
复制
    at java.lang.Thread.run(Thread.java:637)
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档