Springboot 图片文件映射显示

8 篇文章 0 订阅

1、application.yml配置

file:
  # 配置本地映射路径
  # upload-path: F:/vfile//images/	 
  # linux 存放地址物理路径
   upload-path: //opt//weiliao//hailiao//uploadFile//

2、WebMvcConfigurer 配置,访问图片地址重定向

package com.hi.hailiaowenan.base.config;

import java.util.List;
import java.util.TimeZone;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.hi.hailiaowenan.interceptor.ManagerInterceptor;
import com.hi.hailiaowenan.interceptor.SessionInterceptor;

@Configuration
public class WebAppConfigurer implements WebMvcConfigurer {

    @Value("${file.upload-path}")
    private String filePathPrefix;
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    	registry.addResourceHandler("/upload/file/**").addResourceLocations("file:///"+filePathPrefix);
    }
}

3、图片上传删除controller

package com.hi.hailiaowenan.affair.controller;

import java.io.File;
import java.util.Map;
import java.util.UUID;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON;
import com.hi.hailiaowenan.affair.bean.Upload;
import com.hi.hailiaowenan.affair.service.UploadService;
import com.hi.hailiaowenan.base.bean.ReturnCode;
import com.hi.hailiaowenan.base.bean.ReturnObject;
@Controller
@RequestMapping("/file")
public class UploadController {

    private static final Logger logger = LoggerFactory.getLogger(UploadController.class);
	
//	private static final String REAL_PATH = "F://vfile//images//";	 // 指定带盘符的路径, 物理路径
//	private static final String REAL_PATH = "//opt//weiliao//hailiao//uploadFile//";	 // linux 存放地址物理路径
	private static final String PUBLIC_PATH = "/upload/file/";	 // 文件前缀
	
	@Value("${file.upload-path}")
    private String filePathPrefix;
	
	@Autowired
	private UploadService uploadService;

	/* 上传图片 */
	@RequestMapping("/upload")
	public @ResponseBody ReturnObject upload(@RequestParam("uploadFile") MultipartFile fileUpload) throws Exception {
        logger.info("fileUpload: params data");
		Upload upload = new Upload();
		// 得到图片的原始文件名
		String originalName = fileUpload.getOriginalFilename();
        /**
         * 为了处理出现重名现象, 将原始文件名去掉,
         * 通过UUID算法生成新的文件名
         */
        String uuidName = UUID.randomUUID().toString();
        // uuid名称加上文件的后缀名
        String newFile = uuidName + originalName.substring(originalName.lastIndexOf("."));
        // 创建File文件
        File file = new File(filePathPrefix + newFile);
        // 将图片写入到具体的位置
        fileUpload.transferTo(file);
//        String allPath = "/vfile/images/" + newFile;
        String allPath = PUBLIC_PATH + newFile;
		System.out.println("add name:" + newFile);
        upload.setName(newFile);
        upload.setPath(allPath);
        uploadService.insert(upload);
        return new ReturnObject(ReturnCode.SUCCESS, allPath);
	}

	// 删除文件图片 根据path集合
    @RequestMapping(value = "/delete", method = RequestMethod.POST)
	public @ResponseBody ReturnObject deleteUpload(@RequestBody Map<String, Object> params) {
    	logger.info("deleteActivity: params data ===> " + JSON.toJSONString(params));
		String str = params.get("pathList").toString();	//获取前台的数组名字
		if (StringUtils.isEmpty(str) || str.equals("")) {
            return new ReturnObject(ReturnCode.PARAMETERS_ERROR, "参数为空或格式错误");
        }
		String[] pathList = str.split(",");
		for(int i = 0; i < pathList.length; i++){
			//获取文件名,用于后面的遍历查找删除  /vfile/images/ 截取字段 长度为14
//			Integer len = pathList[i].indexOf("/vfile/images");
//			String name = pathList[i].substring(14 + len);
			Integer len = pathList[i].indexOf(PUBLIC_PATH);
			String name = pathList[i].substring(13 + len);
			pathList[i] = PUBLIC_PATH + name;
			System.out.println("del name:"+name);
			//获取目标文件夹:项目中图片所在的绝对路径
			File folder = new File(filePathPrefix);
			File[] files = folder.listFiles();
			for(File file : files){
				if (file.getName().equals(name)) {
					file.delete();
				}
			}
		}
		uploadService.delete(pathList);
        return new ReturnObject(ReturnCode.SUCCESS);
	}
}

4、nginx 配置域名映射


#user  nobody;
worker_processes  1;

#全局错误日志
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 开启gzip 来提高页面加载速度
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";


    # HTTPS server
    #
    server {
        ### 此处省略代码
        
        # 图片访问地址
        location /upload/file {
            proxy_pass http://服务器地址:端口号/upload/file/;
        }
        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值