java - ".": Illegal @MultipartConfig location

标签 java tomcat servlets file-upload

我希望我的 servlet 接收应用程序目录树下某个文件夹中的文件。服务器接受 multipart/form-data 格式的文件。我知道 @MultipartConfig 是标记 servlet 代码的正确属性,允许服务器创建文件。然而,并非每个位置都被认为是安全的,因此有两个问题:

  1. 指定文件上传 servlet 的位置时有哪些限制
  2. 路径可以是相对于应用程序路径还是应该是绝对路径?
  3. 文件之后必须是可下载的,所以一般来说,服务器上哪个位置是保存文件的最佳位置(应用程序树下、树外、Tomcat 树外等?)
  4. 由于注解似乎是一种允许 servlet 下载东西的非常“静态”的方式,例如,是否可以在 web.xml 中指定相同的方式?

谢谢!

最佳答案

1: Which are the limitations, when specifying the locations for file-upload servlets

它需要可读可写。它还需要是一个现有位置,如果不存在,servletcontainer 不会为您预先创建它。


2: Can the paths be relative to application path or they should be absolute?

两者都可以,只要确认1)即可。该容器将在幕后使用 java.io.File来表示位置。所以使用相对路径绝对不是一个好主意。


3: The files must be downloadable afterwards, so in general, which is a best place on the server to keep the files it (under the application tree, out of the tree, out of Tomcat tree etc?)

放入 webapp 文件夹会导致它们在您重新部署 webapp 时全部丢失。它也不适用于某些服务器配置,因为 WAR 文件的提取是一个可选的配置设置。所以把它们放在webapp文件夹外的固定路径上确实更好。要再次下载它们,只需添加一个新的 <Context>到 Tomcat 或创建一个获得 FileInputStream 的 servlet从中写入 OutputStream的回应。示例可以在 this answer 中找到.


4: Since annotation seems to be a very 'static' way to allow servlet download things, can the same be specified in web.xml, for example?

是的,您可以忽略 location注释的属性并使用 Part#getInputStream()将其写入所需位置。然后您可以将位置指定为 <init-param> servlet 并在 init() 中初始化它方法。

关于java - ".": Illegal @MultipartConfig location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938645/

相关文章:

java - 如何在数据库中只存储图像路径(URL)而不是图像本身?

java - putExtra() 不适用于按钮 :onClick

java - Jersey 客户端关闭 InputStream 响应 - 它真的有效吗?

java - 在Tomcat上部署war文件

java - 通过 Maven 部署 Solr 到 Tomcat

mysql - 防止在 MySQL 中缓存查询

java - eclipse servlet问题

java - 检查两个字符串是否相同以停止输入

java - JRebel 与最新 weblogic 的兼容性

java - Struts 2中的ActionContext对于当前请求来说是唯一的吗?