【问题标题】:How to get the file name of input type="file" inside the servlet for File Upload如何在文件上传的servlet中获取输入类型=“文件”的文件名
【发布时间】:2013-06-20 12:37:54
【问题描述】:

下面表单中的动作EdgeWarUpload是一个servlet,它是上传文件。

<form action="EdgeWarUpload" method="post"
                    enctype="multipart/form-data">
    <input type="file" name="file" size="50" />
        <br />
     <input type="submit" value="Upload File" />
 </form>

它工作正常,但在 servlet post 方法中,我想要上传文件的名称。我尝试使用

request.getParameter("file");

但这给了我null。 如何从表单中获取文件名的值。请检查。

【问题讨论】:

标签: java jsp servlets


【解决方案1】:

对于 Servlet 3.0 API

@MultipartConfig() 添加到 servlet 并使用它来打印名称。

public void printNames(HttpServletRequest request){
    for(Part part : request.getParts()){
        System.out.println("PN: "+ part.getName());
        Collection<String> headers = part.getHeaders("content-disposition")
        if (headers == null)
            continue;
        for(String header : headers){
            System.out.println("CDH: " + header);                  
        } 
    }
}

对于较旧的 Servlet API,我建议使用 Apache Commons FileUpload

【讨论】:

  • 嗨@Balint Bako 我得到的参数名称是“文件”。但我想要参数的值。我的意思是我选择上传的文件的名称。
  • 我明白了,很抱歉,我没有启动 servlet 来测试它。检查part.getHeaderNames() 和标头值,它应该在其中。它实际上应该在 Content-Disposition 标头中。
  • part.getHeaderNames() 包含两个 item.content-type 和 content-disposition。
  • 正如我所写的,“内容处置”应该是名称。使用part.getHeaders("content-disposition") 获取标头值的值。我已经更新了答案。
猜你喜欢
  • 2013-02-16
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 2013-04-11
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多