- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为我的应用程序创建 API。在基于 GUI 浏览器的应用程序中,文件通过表单提交上传。所以我只是执行 CommonsMultipartFile file = request.getFile(myfile)
。但是,API 将以字符串形式提供文件的绝对路径,而不是上传文件。我的应用程序将有权访问此绝对路径。
这样我就不必更改我的应用程序的底层方法(它接受通用接口(interface) MultiPartFile
为了 API 的目的,我想从这个绝对路径读取文件并创建一个CommonsMultipartFile
对象,它可以传递给我已经用于基于 GUI 浏览器的应用程序的方法。
我该怎么做? CommonsMultipartFile
的构造函数接受一个 FileItem
最佳答案
这是特定于 API 的代码。即不是通常的文件上传代码。
通常的步骤是:
此答案用独立于 servlet 的逻辑替换了 2 和 3 - 它避免使用 ServletFileUpload(特定于 servlet)及其祖先 FileUpload(以便使用绝对路径名控制文件位置)。注意:(3) 通常检查 HTTP 请求参数以确定传递给 FileItemFactory.createItem 的低级参数——这些参数是手动提供的,然后仅用作信息元数据。 2 和 3 的替换:
下面提供了请求的代码。最后它调用公共(public)代码 - 与 Servlet 上传共享。
// Initialise Apache Commons FileItemFactory for API use only
FileItemFactory fif = new DiskFileItemFactory(sizeThreshold, repositoryBaseDirFile);
// Create Apache Commons FileItem & write file at fullFilePathString into it
FileItem fi = fif.createItem(fieldName, contentType, isFormField, fileName);
fi.write(new java.io.File(new java.net.URI(fullFilePathString));
// Convert FileItem to Spring wrapper: CommonsMultipartFile
org.springframework.web.multipart.MultipartFile mf = new CommonsMultipartFile(fi);
// From here, reuse the same code as the servlet upload. Operate only upon
// Spring MultipartFile, but not ServletFileUpload, FileItemFactory etc...
参数:
(因为避免了ServletFileUpload & FileUpload,所以后面的只是元数据字段,不用于控制处理)
关于java - 如何从绝对文件路径创建 CommonsMultipartFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636582/
我有一个接受CommonsMultipartFile并将其上传到服务器的服务方法 class ExampleService() { def saveFile(CommonsMultipartF
我正在尝试开发一个应用程序,用户将从屏幕上传文件,该文件将在服务器端进行处理。我正在使用 Adobe Flex 的 UI,Spring 3.2 作为中间件和 Java 5。我可以成功上传文件并在服
我正在为我的应用程序创建 API。在基于 GUI 浏览器的应用程序中,文件通过表单提交上传。所以我只是执行 CommonsMultipartFile file = request.getFile(my
大家, 我正在使用 Grails 中的 spock 测试某些需要 CommonMultipartFile 作为输入参数的方法。 我的问题是如何创建这些文件,以便不生成本地文件。其中一些必须使用 req
我正在尝试使用 JPA 将上传的文件保存到数据库。 (对我来说)最“自然”的方式是将域对象定义为: @Entity class UploadFile { ... public CommonsM
我有一个将 CommonsMultipartFile 对象作为参数的 junit 测试方法。 我正在尝试创建一个 FileItem 对象,以便将其传递给构造函数, CommonsMultipartFi
我的 Spring Boot 应用程序中有以下部分代码: base64str 变量具有编码 Base 64 图像, byte[] data = Base64.decode(base64str); 但我
我正在尝试使用 MultipartFile 发出 POST 请求。首先,我想将文件转换为 MultipartFile: File file = new File(filePath); DiskFile
我有一个像这样的 CommonsMultipartFile 类型字段的 bean: public class Placement implements Serializable { private s
我无法读取我在 Grails 中上传的文件。 write 是数据库中我存储上传文件的列。 CommonsMultipartFile testFile = request.getFile('templa
我正在尝试使用一个在请求中接受 CommonsMultipartFile 的 Web 服务。因此,我使用 Spring 的 RestTemplate 创建了一个 HTTP 客户端。下面的方法接受 UR
我正在尝试使用推土机从 CommonsMultipartFile 映射到 byte[]。 我知道我需要一个 customConverter 因为 dozer 对 CommonsMultipartFil
我正在使用 Spring-MVC 3.0,在我的应用程序中,我发送了一些带有多个附件的信息,每个文件都有标题、Id 等。所以,我制作了一个 DTO,如下所示 public class MyDTO {
我有一个表单对象,它由 Spring 自动正确填充。在这个表单对象中,我有一个字段: CommonsMultipartFile file; 用户可以上传文件,并且表单对象正确包含该文件。一切都很好。但
在我的公司,出于额外原因,我需要将 MIME 类型与文件扩展名进行比较。我有一个 CommonsMultipartFile。我试图找出进行这种比较的最佳方法。我看到了 MimetypesFileTyp
我正在尝试使用 javascript 的 XMLHttpRequest 对象上传图像,但 Spring 一直抛出 NoSuchMethodException。异常情况如下: java.lang.NoS
我正在使用 spring 3.0 org.springframework.web.multipart.commons.CommonsMultipartFile 进行文件上传。我想写下使用 Mockit
我不知道该怎么做附件。已安装插件“邮件”,相关文件是从表单上载(成功)的.csv文件。 这有效: def f = request.getFile('uploadedFile') //do a bunc
我正在一个屏幕上工作,它将文件作为 BFILE 类型上传到 oracle 表。我正在使用 spring3 和 hibernate3。 BO 类如下所示: @Entity @Table(name="ab
它有效: 查看(普惠制): Controller : def destination = "D:\\someFolder\\image.jpg"; def f = reques
我是一名优秀的程序员,十分优秀!