DiskItemFileFactory和ServletFileUpload之间的逻辑区别是什么?

时间:2016-02-12 06:52:31

标签: servlets web-applications

我在互联网上搜索它说DiskItemFilefactory为字符串创建了一个Factory文件而ServletFileUpload是一个文件处理程序。但是我看到我们使用它们来设置文件的最大大小为Uploaded。

请提供一个逻辑实例来演示他们的工作

1 个答案:

答案 0 :(得分:0)

ServletFileUpload是文件上传处理程序。如何存储单个零件的数据由用于创建它们的工厂确定;给定的部分可能在内存中,磁盘上或其他地方。

如果你查看ServletFileUpload类的源代码,你会看到:

// ----------------------------------------------------------- Constructors

/**
* Constructs an uninitialised instance of this class. A factory must be
* configured, using <code>setFileItemFactory()</code>, before attempting
* to parse requests.
*
* @see FileUpload#FileUpload(FileItemFactory)
*/
public ServletFileUpload() {
    super();
}


/**
* Constructs an instance of this class which uses the supplied factory to
* create <code>FileItem</code> instances.
*
* @see FileUpload#FileUpload()
* @param fileItemFactory The factory to use for creating file items.
*/
public ServletFileUpload(FileItemFactory fileItemFactory) {
    super(fileItemFactory);
}

DiskFileItemFactory是默认FileItemFactory实施。此实现创建FileItem个实例,这些实例将其内容保存在内存中,较小的项目或磁盘上的临时文件中,以用于较大的项目。内容将存储在磁盘上的大小阈值是可配置的,就像创建临时文件的目录一样。

来自Using FileUpload的最简单的案例:

// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();

// Configure a repository (to ensure a secure temp location is used)
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);

// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);

// Parse the request
List<FileItem> items = upload.parseRequest(request);

当然,您的意思是DiskFileItemFactory,而不是DiskItemFilefactory

相关问题