使用Servlet3.0进行文件上传时,getFileName()方法找不到

使用表单将数据以POST方式提交到Servlet,Servlet进行数据处理
关键代码如下

注意看加粗的那一句

            // 存储路径  
    String savePath = request.getServletContext().getRealPath("/WEB-INF/uploadFile");  
    // 获取上传的文件集合  
    Collection<Part> parts = request.getParts();  

    // 上传单个文件  
    // Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。  
    // Part part = parts[0];//从上传的文件集合中获取Part对象  
    Part file = request.getPart("file");// 通过表单file控件

    // Servlet3没有提供直接获取文件名的方法,需要从请求头中解析出来  
    // 获取请求头
    String header = file.getHeader("content-disposition");  
    // 获取文件名  

## String fileName = getFileName(header);

    // 把文件写到指定路径  
    file.write(savePath + File.separator + fileName);  
    String fileAddr = savePath + "/" + fileName;  

            然后问题来了,我写到加粗的那一句时候,是标红的,就是说我没有这个方法,然后我还找了其他的,有一种使用如下方法也可以获取文件名的

            Part file = request.getPart("file");// 通过表单file控件

String submittedFileName = part.getSubmittedFileName();

            String fileName = header.substring(header.lastIndexOf("\\")+1,heder.lastIndexOf("\""));
            问题又来了,还是加粗的那一句,这一个方法找不到。
            我没辙了,求问如何解决

2个回答

你看着改下就行了

private String getFileName(Part part) {
String header = part.getHeader("Content-Disposition");
String fileName = header.substring(header.indexOf("filename=\"") + 10,
header.lastIndexOf("\""));
return fileName;
}

Servlet 3.1里有getSubmittedFileName这个方法。换Tomcat8试试。

m0_37581971
negyxO 这里使用这个getSubmittedFileName()方法之后上传zip文件会有 java.io.FileNotFoundException 不知怎么解决
一年多之前 回复
m0_37581971
negyxO 这个回答靠谱~不过总是用封装好的东西,感觉心里有点虚
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!