【问题标题】:Send a File to Servlet from JSP [duplicate]从 JSP 向 Servlet 发送文件 [重复]
【发布时间】:2013-01-05 15:02:43
【问题描述】:

可能重复:
How to upload files to server using JSP/Servlet?

我在 jsp 中编写了这段代码来将文件发送到 Servlet:

<input type="file" name="inputFoto" id="inputFoto"/>

而我的 Servlet 是:

{...
File fotoImg = (File) request.getAttribute("inputFoto");
byte[] foto = convertiInArrayByte(fotoImg);
..}

它不起作用。如何从 JSP 获取 Servlet 中的文件? 有人能帮我吗?也许文件的路径(在我的电脑上)有一些问题!?!?

【问题讨论】:

标签: java jsp servlets


【解决方案1】:

file 类型的输入不是简单的属性,它们在请求的单独块中发送。因此,您的 HTTP 请求中必须至少包含 2 个部分。

所以,您必须使用Multipart Form Data 处理来解析文件。这里有很多例子,例如:

最常见的是 Apache Commons Fileupload http://commons.apache.org/fileupload 用于此目的。

【讨论】:

  • 使用第一个链接中的指南,我有一个问题:可以在Servlet的doPost方法中调用processRequest方法吗? @GaborSch
  • 我不确定我是否知道您所说的确切方法,但通常doPost() 是处理请求的地方。
  • 是的,但是“HttpServletRequest 类型的方法 getPart(String) 未定义”@GaborSch
  • 我推荐使用 Apache Commons Fileupload,有很好的例子,他们已经解决了你现在面临的这类问题。
  • 好的。你能帮助我吗?我只想处理 input type="file" 因为表单中有其他输入,然后我想将 input type="file" 转换为 byte[];我尝试使用本指南 (stackoverflow.com/questions/2422468/…),但 List 有问题: List 类型不是通用的;它不能用参数 参数化。谢谢@GaborSch
猜你喜欢
  • 2020-03-06
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
相关资源
最近更新 更多