咸鱼到碗里来
2017-06-01 06:15
采纳率: 50%
浏览 3.5k
已采纳

使用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条回答 默认 最新

  • 白萝卜blb 2017-06-01 10:15
    已采纳

    你看着改下就行了

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

    点赞 打赏 评论
  • linghy 2017-12-06 08:57

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

    点赞 打赏 评论

相关推荐 更多相似问题