我要求上传图片。这涉及到两件事: 1.将图像压入图像服务器 2.将图像数据保存到DB
此图像推送逻辑很常见,并且在所有控制器中都有引用。我只想在拦截器中维护这个图像推送逻辑,或者用@ControllerAdvice维护一个单独的控制器。
在委托给相关控制器之前请求处理用@ControllerAdvice类注释的推送逻辑,然后将结果数据传递给相关控制器。
任何帮助都可以在此得到赞赏。
答案 0 :(得分:0)
拦截器就是你要找的......
看看这个例子:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="myapp.server.controller")
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ImageUploadInterceptor());
}
}
现在我们定义拦截器:
@Component
public class ImageUploadInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//Upload image here
return true;
}
}
这是否满足您的需求?
答案 1 :(得分:0)
现在我的代码如下所示
@Controller
public class StoreController{
@Autowired services..
@RequestMapping("/store/image")
public ModelAndView saveStoreImage(@ModelAttribute("imageUpload") final ImageUpload,BindingResult){
//现在首先将推送图像推送到内容服务器 使用ProcessBuilder..it调用.sh文件将返回状态码0(0表示成功上传到静态图像服务器的图像)
//现在创建真实的Image obj
final Image image = new Image(); // Image is my own domain
image.setEntityId(storeId);
image.setImageUri("/images/testImage.png");
imageService.save(image);
//此图像uri是我们之前推送的名称的图像路径
//现在提供服务将图像保存到DB
}
}
相同的上述代码在所有控制器中重复
@Controller 公共类Couponcontroller {
@Autowired Services....
@ReqMapping("/coupon/image")
public ModelAndView saveCouponImage((@ModelAttribute("imageUplod") final ImageUpload,BindingResult){
// same push logic like above executing sh file..is common always
//and then create Image and populate data save into DB
}
}
现在我想用@ControllerAdvice维护公共图像上传(推送)逻辑到一个类,并将图像数据传递给相关的控制器。
谢谢, Syamala。