博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot 上传图片与回显
阅读量:5138 次
发布时间:2019-06-13

本文共 4138 字,大约阅读时间需要 13 分钟。

  在网上找了很多例子,不能完全契合自己的需求,自行整理了下。需求是这样的:项目小,所以不需要单独的图片服务器,图片保存在服务器中任意的地方,并且可以通过访问服务器来获取图片。话不多说上代码:

1、依赖

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
commons-lang
commons-lang
2.6
provided
org.apache.commons
commons-io
1.3.2

2、文件上传工具类

package com.slovi.utils;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import org.apache.commons.io.FilenameUtils;import org.apache.commons.io.IOUtils;import org.springframework.web.multipart.MultipartFile;public class FileUpload {		/**	 * 文件上传处理	 * 	 * @param file	 * @return	 */	public static String writeUploadFile(MultipartFile file,String module) {		String filename = file.getOriginalFilename();		String realpath = "D:/rentHouse/" +  module +"/";		File fileDir = new File(realpath);		if (!fileDir.exists())			fileDir.mkdirs();		String extname = FilenameUtils.getExtension(filename);		String allowImgFormat = "gif,jpg,jpeg,png";		if (!allowImgFormat.contains(extname.toLowerCase())) {			return "NOT_IMAGE";		}				filename = Math.abs(file.getOriginalFilename().hashCode()) + RandomUtils.createRandomString( 4 ) + "." + extname;		InputStream input = null;		FileOutputStream fos = null;		try {			input = file.getInputStream();			fos = new FileOutputStream(realpath + "/" + filename);			IOUtils.copy(input, fos);		} catch (Exception e) {			e.printStackTrace();			return null;		} finally {			IOUtils.closeQuietly(input);			IOUtils.closeQuietly(fos);		}		return "/" + filename;	}}

3、随机数生成工具类

package com.slovi.utils;public class RandomUtils {	private static final String charlist = "0123456789";	public static String createRandomString(int len) {		String str = new String();		for (int i = 0; i < len; i++) {			str += charlist.charAt(getRandom(charlist.length()));		}		return str;	}	public static int getRandom(int mod) {		if (mod < 1) {			return 0;		}		int ret = getInt() % mod;		return ret;	}	private static int getInt() {		int ret = Math.abs(Long.valueOf(getRandomNumString()).intValue());		return ret;	}	private static String getRandomNumString() {		double d = Math.random();		String dStr = String.valueOf(d).replaceAll("[^\\d]", "");		if (dStr.length() > 1) {			dStr = dStr.substring(0, dStr.length() - 1);		}		return dStr;	}}

4、控制类

package com.slovi.controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import com.slovi.utils.FileUpload;@RestController@RequestMapping("/Advert")public class AdvertController {		@Autowired	private AdvertInfoService advertInfoService;		@PostMapping("/upload")	public Object upload(@RequestParam("file") MultipartFile  file) {		String filename = FileUpload.writeUploadFile(file,"advert");                return filename;	}		}

5、配置类

package com.slovi.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class WebMvcConfig implements WebMvcConfigurer {    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");        registry.addResourceHandler("/advertIMG/**").addResourceLocations("file:D:/rentHouse/");    } }

6、测试页面,放到resources/templates包下

    
Title

  启动项目,访问:localhost:8888,进入上传页面,上传成功会返回图片名称,例如:11348371257146.jpg,然后访问http://localhost:8888/advertIMG/11348371257146.jpg,可以获取到图片。

转载于:https://www.cnblogs.com/hhhshct/p/9121158.html

你可能感兴趣的文章
移动开发平台-应用之星app制作教程
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
如何在maven工程中加载oracle驱动
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Android-多线程AsyncTask
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
【题解】青蛙的约会
查看>>
autopep8
查看>>