记一次难搞的轮播图

话说很久之前,接到一个领导需求,需要在门户首页展示几个图片,也就是轮播图。第一个版本初定稿就是使用fasdfs文件服务器,再通过设定好的nginx端口8080,进行返回给前端图片的url;想法总是美好的,实际的生产环境是分为内外网的,你的文件服务器部署到了内网上,而用户是通过外网去访问的,所以说根本就不在一个网段里面,即使你反回这个url是正确的,前端也访问不到。
第二版,想着把图片搞到项目里面,也就是resouce下的static目录下,何曾想扔到服务器上的时候,jar里面资源只支持可读,不支持写入,又是凉凉,
第三版,目标逐渐明确,我需要一个目录!!这个目录可以在任何地方,可以是同jar一个等级,也可以通过yml文件进行自定义(并且这个资源还属于这个服务!不在jar包里,却属于你的资源,这就是人家老外想得多),功夫不怕有心人,终于在网上找到一些资料:配置资源映射路径
参考与:资料一
资料二
最重要就是这两个,

@Configuration
public class TestPic extends WebMvcConfigurationSupport {
    @Value("${file.common.uploadWindow}")
    private String filePathWindow;
    @Value("${file.common.uploadLinux}")
    private String filePathLinux;


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        String os = System.getProperty("os.name");
        if (os.toLowerCase().startsWith("win")) {
            registry.addResourceHandler("/image/**")
                    .addResourceLocations("file:" + filePathWindow);
        } else {
            registry.addResourceHandler("/image/**")
                    .addResourceLocations("file:" + filePathLinux) ;
        }
        super.addResourceHandlers(registry);

/**
   下面这些是我做测试用的,如果想放到与jar同级的地方 用这个应该可以!
     ApplicationHome h = new ApplicationHome(this.getClass());
      String path = h.getSource().getParent();
      String realPath = path + "/upload/uploadFile/";
      registry.addResourceHandler("/static1/**").addResourceLocations("file:"+realPath);

/**
 * 资源映射路径
 */
       // registry.addResourceHandler("/image/**").addResourceLocations("file:D:/image/");
    }
}

在下面  就很简单了。
对一个 路径进行传输 图片,
@SuppressWarnings("rawtypes")
	@PostMapping("/add/ForPic")
	@ApiOperation(value = "新增轮播图", notes = "")
	public ReturnData addPic(@RequestParam("file")MultipartFile uploadFile,@RequestParam("title")String title ,HttpServletRequest request) {
		ReturnData re = new ReturnData();
		if(uploadFile.isEmpty()){
			re.setReason("请选择上传文件");
			re.setStatus_code("1502");
			return re;
		}
		File file = getRealFile();
		if(!file.isDirectory()){
			file.mkdirs();
		}
		String oldName = uploadFile.getOriginalFilename();
		String fileId = UUID.randomUUID().toString().replaceAll("-","").substring(0,10);

		String newName = fileId + oldName.substring(oldName.lastIndexOf("."),oldName.length());
		try {
			File newFile = new File(file.getAbsolutePath() + File.separator + newName);
			uploadFile.transferTo(newFile);
		} catch (Exception e) {
			e.printStackTrace();
			re.setReason("传输失败");
			re.setStatus_code("1501");
			return re;
		}

		FileUploadDTO fileUploadDTO = new FileUploadDTO();
		fileUploadDTO.setFile_name(oldName);
		fileUploadDTO.setTitle(title);
		fileUploadDTO.setFile_id(fileId);
		fileUploadDTO.setFile_type(oldName.substring(oldName.lastIndexOf("."),oldName.length()));
		fileUploadDTO.setCase_type(666);

		fileUpLoadService.addFiles(fileUploadDTO);
		re.setReason("新增成功");
		return re;
	}

	private File getRealFile() {
		String os = System.getProperty("os.name");
		String realPath = null;
		if (os.toLowerCase().startsWith("win")) {
			realPath = filePathWindow;
		} else {
			realPath = filePathLinux;
		}
		File file = new File(realPath);
		return file;
	}
over-------一切还是 要靠自己啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值