使用Apache Tomcat 7.0.40.0时servlet中的文件上传错误

当我使用Apache Tomcat 7.0.34通过“

org.apache.tomcat.util.fileupload”上传文件时,不会显示任何错误,并且一切正常。但是,当我使用Apache Tomcat

7.0.40时,在“

parseRequest(request)”行中发生了一个错误。我不能说这是一个错误,因为如果我使用RequestContext,那么该错误就会消失,但我不知道如何使用RequestContext接口。请帮助我如何使用RequestContext,因为我需要将实例传递给“

parseRequest(RequestContext ctx)”方法。

 public void service(HttpServletRequest request,HttpServletResponse response)

{

response.setContentType("text/html;charset=UTF-8");

String status=null;

List<FileItem> items=null;

try

{

if(ServletFileUpload.isMultipartContent(request))

{

items=new ServletFileUpload(new

DiskFileItemFactory()).parseRequest(request);

for(FileItem item:items)

{

if(item.getFieldName().equals("status"))

status=item.getString();

}

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

我需要将RequestContext实例放入parseRequest(RequestContext

ctx)内,但不知道如何使用RequestContext。

回答:

这 在Servlet

3.0中处理文件上传的正确方法。相反,您应该@MultipartConfig在Servlet上使用批注,并使用HttpServletRequest#getPart()方法来获取上载的文件,该文件是Servlet

3.0中引入的。

org.apache.tomcat.util.fileupload软件包完全包含那些正在执行此新Servlet

3.0功能的所有“幕后”工作的类。您不应该直接使用它们,就像sun.*在Sun / Oracle JVM上使用Java

SE时不应该使用com.mysql.*类,在MySQL DB上使用JDBC时也不应该使用类。似乎您对使用Apache Commons

FileUpload且针对Servlet

2.5或更早版本的示例感到困惑,该示例恰好使用相同的类名。

使用特定于Tomcat的类会将您的Web应用程序紧密耦合到特定的Tomcat版本,并使您的Web应用程序无法 到其他Servlet

3.0兼容的容器,甚至在遇到自己的Tomcat版本时也无法 。在这种特殊情况下,您应该遵循javax.servlet软件包中的标准类。

正确的方式显示在此答案的第二部分:如何使用JSP /

Servlet将文件上传到服务器?

总而言之,这个启动示例应该可以帮助您入门:

<form action="upload" method="post" enctype="multipart/form-data">

<input type="text" name="status" />

<input type="file" name="uploadedFile" />

<input type="submit" />

</form>

@WebServlet("/upload")

@MultipartConfig

public class UploadServlet extends HttpServlet {

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String status = request.getParameter("status"); // Retrieves <input type="text" name="status">

Part uploadedFile = request.getPart("uploadedFile"); // Retrieves <input type="file" name="uploadedFile">

InputStream content = uploadedFile.getInputStream();

// ... (do your job here)

}

}

就这样。

以上是 使用Apache Tomcat 7.0.40.0时servlet中的文件上传错误 的全部内容, 来源链接: utcz.com/qa/406271.html

回到顶部