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

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

  • 白萝卜。 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;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题