postman测试上传多个文件数组

一、代码

今天在写controller时需要上传文件形式的参数,用swagger2死活都测试不成功,拿postman一试,却成功的将获取到的文件传到controller层,记录一下吧,好记忆不如烂笔头。

先看一下controller接口层:

@ApiOperation(value = "新增模型")
    @PostMapping(value = "/uploadFile", consumes = "multipart/*",headers = "content-Type=multipart/form-data")
    public BaseResponse addModel(@ApiParam("modelName") @RequestParam(value = "modelName", required = true) String modelName,
                                 @ApiParam("originalName") @RequestParam(value = "originalName", required = false) String originalName,
                                 @ApiParam("modelType") @RequestParam(value = "modelType", required = true) String modelType,
                                 @ApiParam("multipartFiles") @RequestParam(value = "multipartFiles", required = true) MultipartFile[] multipartFiles) {

其中:MultipartFile是一个接口,如果需要上传文件形式,就需要将文件定义为MultipartFile,如果是数组就是MultipartFile[ ]。有别于File类。

public interface MultipartFile extends InputStreamSource 

当然MultipartFile的实现类也可以和File之间进行转换:从前端接收到的MultipartFile转换为File类型方便我们操作。转换为File之后会在本地生成一个文件,一般在项目的路径下面,可以通过file.getAbsoluteFile()方法获取生成文件的路径,在操作完成以后记得file.delete()方法删除这个文件,免得浪费空间。

/**
     * 转换MultipartFile 为 File文件类型
     */
    public File conversionMultipartFileToFile(MultipartFile multipartFile){
        String fileName = multipartFile.getOriginalFilename();
        File file = new File(fileName);
        OutputStream out = null;
        try{
            //InputStream in = multipartFile.getInputStream();
            out = new FileOutputStream(file);
            byte[] ss = multipartFile.getBytes();
            for(int i = 0; i < ss.length; i++){
                out.write(ss[i]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (out != null){
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return file;
    }

测试:

用swagger怎么测试传过去的文件都是空的,但是用postman就是可以的,很奇怪,直到现在我还在找原因。swagger2的界面是可以正常选择文件的,但就是传的空文件。

postman测试上传多个文件数组_第1张图片

 postman测试:

常规类型参数在params:

postman测试上传多个文件数组_第2张图片

headers中key-value设置:Content-Type=multipart/form-data

postman测试上传多个文件数组_第3张图片 在body中设置文件的参数:选择上传的文件即可,参数类型选择文件Filepostman测试上传多个文件数组_第4张图片

 然后发送请求,就可以正常传送文件流了。

postman测试上传多个文件数组_第5张图片

 可以看到接口层已经接收到发送过来的文件了。

 

你可能感兴趣的:(后端接口,postman,后端,java)