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

使用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条)

报告相同问题?

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行