gpt4 book ai didi

spring - 如何在仅给定文件的情况下创建 CommonsMultipartFile 对象

转载 作者:IT老高 更新时间:2023-10-28 13:54:27 24 4
gpt4 key购买 nike

我有一个将 CommonsMultipartFile 对象作为参数的 junit 测试方法。

我正在尝试创建一个 FileItem 对象,以便将其传递给构造函数,

CommonsMultipartFile(org.apache.commons.fileupload.FileItem fileItem)

为此,我正在尝试使用 DiskFileItem 构造函数创建 FileItem 对象,

DiskFileItem(java.lang.String fieldName, java.lang.String contentType, boolean isFormField, java.lang.String fileName, int sizeThreshold, java.io.File repository)

但我不确定如何传递这些参数。

我在 Spring 3 MVC Controller 中完成了所有这些工作,但是要进行我的 junit 测试,我需要将一个方法传递给两个对象。一个是 UploadItem 对象,如下所示,

import org.springframework.web.multipart.commons.CommonsMultipartFile;

public class UploadItem {
private String fileName;
private String filePath;
private CommonsMultipartFile fileData;

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public String getFilePath() {
return filePath;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public CommonsMultipartFile getFileData() {
return fileData;
}

public void setFileData(CommonsMultipartFile fileData) {
this.fileData = fileData;
}
}

setFileData() 方法需要我尝试创建的 CommonsMultipartFile 对象,它只是在我的 src/test/resources 目录中给定一个文件。

有人知道我如何获取文件、创建 FileItem 对象并将其传递给 CommonsMultipartFile 对象构造函数吗?

谢谢。如果有任何不清楚的地方,请告诉我 - 我对 Spring MVC 文件上传不太熟悉。

最佳答案

使用更常用的界面org.springframework.web.multipart.MultipartFile .代替org.springframework.web.multipart.commons.CommonsMultipartFile 在您的命令 (UploadItem) 中。 (CommonsMultipartFile 是接口(interface)的 1:1 实现)。

现在您可以使用模拟类 org.springframework.mock.web.MockMultipartFile 创建 CommonsMultipartFile 的实例. (这是 spring-test.jar 的元素)。

那么在测试中创建MultipartFile只是一个语句,没有任何强制转换:

MockMultipartFile mockMultipartFile = new MockMultipartFile(
"test.txt", //filename
"Hallo World".getBytes()); //content

关于spring - 如何在仅给定文件的情况下创建 CommonsMultipartFile 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com