springcloud中上傳文件

項目使用springcloud作爲框架,使用fegin去調用服務。

1.處理Multipart的config

上傳時,需要在fegin中加入以下配置類。

/**
 * @description: 上傳文件的config
 * @Author: 
 * @Date: 2020/4/1 11:34
 */
@Configuration
public class FeignMultipartSupportConfig {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    @Primary//自動裝配時當出現多個Bean候選者時,被註解爲@Primary的Bean將作爲首選者,否則將拋出異常
    @Scope("prototype")//使用多例每次獲得bean都會生成一個新的對象
    public Encoder multipartFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }

    @Bean
    public feign.Logger.Level multipartLoggerLevel() {
        return feign.Logger.Level.FULL;
    }
}

2.fegin中的controller
 /**
     * 批量導入設備信息
     * @return
     */
    @ApiOperation(value = "批量導入設備信息", httpMethod = "POST")
    @RequestMapping(value = "/batchImportEquipment", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @ApiImplicitParams({
            @ApiImplicitParam(value = "文件", name = "multipartFile", dataType = "String"),
            @ApiImplicitParam(value = "類型", name = "type", dataType = "String"),
            @ApiImplicitParam(value = "類型id", name = "typeId", dataType = "String")
    })
    public ResponseDto batchImportEquipment(@RequestParam("multipartFile") MultipartFile multipartFile, @RequestParam("type") String type, @RequestParam("typeId") String typeId){
        return iEquipmentService.batchImportEquipment(multipartFile, type, typeId);
    }

這裏注意接收文件用RequestParam註解和multipartFile都可以,在RequestMapping需要加入consumes = MediaType.MULTIPART_FORM_DATA_VALUE。

3.fegin中代碼
 /**
     * 批量導入設備信息
     * @param multipartFile 文件
     * @param typeId 分類信息id
     * @param type 分類信息
     * @return
     */
    @RequestMapping(value = "/batchImportEquipment", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    ResponseDto batchImportEquipment(@RequestPart("multipartFile")MultipartFile multipartFile, @RequestParam("type") String type, @RequestParam("typeId") String typeId);

這裏的文件參數註解必須爲@RequestPart

4.服務提供者接收代碼
  /**
     * 批量導入設備信息
     * @param multipartFile 文件
     * @param type 分類信息
     * @param typeId 分類信息id
     * @return
     */
    @RequestMapping(value = "/batchImportEquipment", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseDto batchImportEquipment(@RequestPart("multipartFile") MultipartFile multipartFile, @RequestParam("type") String type, @RequestParam("typeId") String typeId ){
       //處理業務
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章