Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t在测试类之外导入org.springframework.mock.web.MockMultipartFile_Java_Arrays_Spring - Fatal编程技术网

Java Can';t在测试类之外导入org.springframework.mock.web.MockMultipartFile

Java Can';t在测试类之外导入org.springframework.mock.web.MockMultipartFile,java,arrays,spring,Java,Arrays,Spring,我试图将数据库中存储为Blob的图像转换为多部分文件,以便在请求时返回给客户端。我以字节[]的形式检索Blob,并尝试将其转换为多部分文件,以服务于客户端 我试着这样做: 但是IntelliJ告诉我,当我导入时,它找不到MockMultipartFile部分:import org.springframework.mock.web.MockMultipartFile 我可以在测试类中导入它,没有问题,但不能在测试类之外。我能在这里做吗 此外,我还尝试用我自己的MultipartFile版本实现一个

我试图将数据库中存储为Blob的图像转换为多部分文件,以便在请求时返回给客户端。我以字节[]的形式检索Blob,并尝试将其转换为多部分文件,以服务于客户端

我试着这样做:

但是IntelliJ告诉我,当我导入时,它找不到MockMultipartFile部分:
import org.springframework.mock.web.MockMultipartFile

我可以在测试类中导入它,没有问题,但不能在测试类之外。我能在这里做吗

此外,我还尝试用我自己的MultipartFile版本实现一个类,如另一个流行答案中所述,但它告诉我它找不到序列化程序


有什么建议吗

您的方法有几个问题

  • 多部分
    文件是HTTP
    请求
    格式,不用于
    响应
  • 对于响应,您所要做的就是将文件写入。使用
    Spring
  • 现在回到您的原始问题,您不能导入
    MockMultipartFile
    。这很可能是因为您正在使用
    Maven
    ,并且依赖项(很可能
    spring boot starter test
    )将
    范围设置为
    test

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope><!-- CHANGE THIS TO "runtime" -->
    </dependency>
    

    最后,我找到了一个有帮助的软件包 导入org.springframework.mock.web.MockMultipartFile

    <properties>
        <java.version>1.8</java.version>
        <spring.version>5.1.2.RELEASE</spring.version>
    </properties>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    
    1.8
    5.1.2.1发布
    org.springframework
    弹簧试验
    ${spring.version}
    org.springframework
    弹簧芯
    ${spring.version}
    
    Hmm,我想我这样做是因为图像是DTO的一个字段,其中包含需要返回给客户机的各种字段(如姓名、电子邮件、地址等),并且图像是该DTO的一部分。我可以制作一种新类型的DTO,但它必须将图像存储为字段,以便在客户端进行处理。我可以改变这种方法吗?好的,客户端浏览器是基于浏览器的吗?如果不是,那么反序列化使用什么?此特定质询的要求没有说明客户端需要什么。我假设它是基于浏览器的,所以我在@ResponseBody中输入一个模板,将填写好的DTO输入到模板中。也许有另一种方法?如果它是基于浏览器的客户端,并且您计划使用JSON进行序列化/反序列化,那么您不能在DTO中传递文件对象。As文件对象不能用
    JSON
    表示。一种方法是将文件对象转换为
    base64
    字符串,在您的情况下,这是可以的,因为您正在返回图像。Base64字符串可以直接用作
    ,只要我没有在其中尝试映像,它会将字段作为JSON传递回客户端吗?但我会尝试这个黑客…你不应该使用它,因为它只是用于测试。只需使用
    OutputStream
    @M.Deinum将
    byte[]
    直接流式传输到客户机,这是怎么回事?你的肉体能给出一个答案吗?
    <properties>
        <java.version>1.8</java.version>
        <spring.version>5.1.2.RELEASE</spring.version>
    </properties>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>