前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot上传文件(存入服务器,并将URL存入数据库表中)「建议收藏」

springboot上传文件(存入服务器,并将URL存入数据库表中)「建议收藏」

作者头像
全栈程序员站长
发布2022-09-07 12:34:11
1.8K0
发布2022-09-07 12:34:11
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
public R upLoadAccessory(@RequestParam("file")MultipartFile file){
		
		Map<String,Object> map = new HashMap<>();
		
		if (file.isEmpty()) {
			return R.ok(map);
			
		}else {
			
			//保存时的文件名
			DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); 
			Calendar calendar = Calendar.getInstance(); 
			String dateName = df.format(calendar.getTime())+file.getOriginalFilename();
			
			System.out.println(dateName);
			//保存文件的绝对路径
			WebApplicationContext webApplicationContext = (WebApplicationContext)SpringContextUtils.applicationContext; 
			ServletContext servletContext = webApplicationContext.getServletContext();
			String realPath = servletContext.getRealPath("/");
			String filePath = realPath + "WEB-INF"+File.separator + "classes" + File.separator +"static" + File.separator + "resource" + File.separator+dateName;
			System.out.println("绝对路径:"+filePath);
			
			File newFile = new File(filePath);
			
			//MultipartFile的方法直接写文件
			try {
				
				//上传文件
				file.transferTo(newFile);
				
				//数据库存储的相对路径
				String projectPath = servletContext.getContextPath();
				HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
				String contextpath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+projectPath;
				String url = contextpath + "/resource/"+dateName;
				System.out.println("相对路径:"+url);
				//文件名与文件URL存入数据库表
				....
				
				
			} catch (IllegalStateException | IOException e) {
				e.printStackTrace();
			}
			
		}
		return R.ok(map);
	}

2018.5.16 更新: 补充一下工具类

代码语言:javascript
复制
@Component
public class SpringContextUtils implements ApplicationContextAware {
	public static ApplicationContext applicationContext; 

	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		SpringContextUtils.applicationContext = applicationContext;
	}

	public static Object getBean(String name) {
		return applicationContext.getBean(name);
	}

	public static <T> T getBean(String name, Class<T> requiredType) {
		return applicationContext.getBean(name, requiredType);
	}

	public static boolean containsBean(String name) {
		return applicationContext.containsBean(name);
	}

	public static boolean isSingleton(String name) {
		return applicationContext.isSingleton(name);
	}

	public static Class<? extends Object> getType(String name) {
		return applicationContext.getType(name);
	}

}

2019.8.6更新— HttpContextUtils 工具类

代码语言:javascript
复制
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

public class HttpContextUtils {

	public static HttpServletRequest getHttpServletRequest() {
		return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
	}
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134632.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档