界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成。

//UUIDUtils

public class UUIDUtils {
public static String getUUID(){
return UUID.randomUUID().toString().replace("-", "");
}
}

//FileNameUtil

//生成新的文件名
public class FileNameUtil {
/**
* 获取文件后缀
* @param fileName
* @return
*/
public static String getSuffix(String fileName){
return fileName.substring(fileName.lastIndexOf("."));
} /**
* 生成新的文件名
* @param fileOriginName 源文件名
* @return
*/
public static String getFileName(String fileOriginName){
return UUIDUtils.getUUID() + FileNameUtil.getSuffix(fileOriginName);
} }

//FileUploadUtil

//图片上传工具类
public class FileUploadUtil {
/**
*
* @param file 文件
* @param path 文件存放路径
* @param fileName 原文件名
* @return
*/
public static boolean upload(MultipartFile file, String path, String fileName){ // 生成新的文件名
String realPath = path + "/" +fileName; //使用原文件名
// String realPath = path + "/" + fileName; File dest = new File(realPath); //判断文件父目录是否存在
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
} try {
//保存文件
file.transferTo(dest);
return true;
} catch (IllegalStateException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
} } }

//application.properties

# 设置单个文件最大内存
spring.servlet.multipart.max-file-size = 50Mb
# 设置所有文件最大内存
spring.http.multipart.max-request-size=500Mb
# 自定义文件上传路径
web.upload-path=F:/blog-images/

在这里,由于我将图片上传至自己的本地服务器上了,而本地的磁盘都是被保护的,无法直接访问他,所以我需要给我的图片一个虚拟路径,将虚拟路径映射到此图片存放位置即可

写一个配置类uploadFileConfig

@Configuration
public class UploadFileConfig extends WebMvcConfigurationSupport { @Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/images/**").addResourceLocations("file:/F:/blog-images/");
super.addResourceHandlers(registry); } }

之后写Controller

    @ApiOperation("图片上传")
@ApiImplicitParam(name = "file", value = "文件", required = true, dataType = "File")
@RequestMapping(value="/upload",method= {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Result upload(@RequestParam("file")MultipartFile file,HttpServletRequest request) {
//定义要上传文件 的存放路径
String localPath="F:/blog-images/";
//获得文件名字
String fileName=file.getOriginalFilename();
fileName= FileNameUtil.getFileName(fileName);
File dest = new File(localPath + fileName);
if(FileUploadUtil.upload(file, localPath, fileName)){
// 将上传的文件写入到服务器端文件夹
// 获取当前项目运气的完整url
String requestURL = request.getRequestURL().toString();
// 获取当前项目的请求路径url
String requestURI = request.getRequestURI();
// 得到去掉了uri的路径
String url = requestURL.substring(0, requestURL.length()-requestURI.length() + 1);
url="images/"+ fileName; return ResultUtil.success(url); }
// 返回
return ResultUtil.error(202,"未知错误导致上传失败");
}

自此图片上传就成功啦,可以用postman来测试下接口

OK,大功告成。

spring boot图片上传至远程服务器并返回新的图片路径的更多相关文章

  1. sftp上传到远程服务器

    开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...

  2. Spring框架学习笔记(7)——Spring Boot 实现上传和下载

    最近忙着都没时间写博客了,做了个项目,实现了下载功能,没用到上传,写这篇文章也是顺便参考学习了如何实现上传,上传和下载做一篇笔记吧 下载 主要有下面的两种方式: 通过ResponseEntity实现 ...

  3. MySQL执行sql查询并上传至远程服务器

    最近项目中有需要做一个shell脚本,可以对一个数据库执行sql操作,并将结果转为txt,筛选结果用tab隔开,保存至一个远程服务器上,以供其他人用Excel读取用txt中的内容. MySQL中将结果 ...

  4. Spring Boot 文件上传原理

    首先我们要知道什么是Spring Boot,这里简单说一下,Spring Boot可以看作是一个框架中的框架--->集成了各种框架,像security.jpa.data.cloud等等,它无须关 ...

  5. spring boot文件上传、下载

    主题:Spring boot 文件上传(多文件上传)[从零开始学Spring Boot]http://www.iteye.com/topic/1143595 Spring MVC实现文件下载http: ...

  6. linux自动备份文件 并上传到远程服务器 脚本实现

    (1)在服务器上创建备份目录,并赋予权限       mkdir -p /backup/bakdata  #新建数据备份目录(2)完成备份脚本操作新建脚本文件      vi bakdata.sh添加 ...

  7. Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常

    Spring Boot 默认上传文件大小限制是 1MB,默认单次请求大小是 10MB,超出大小会跑出 MaxUploadSizeExceededException 异常 spring.servlet. ...

  8. MultipartFile 图片上传到Linux服务器Tomcat下的webapps目录

    第一次接触 linux 服务器,做图片上传的时候遇到了些坑,搞了些天总算成功了,记录一下 /** * 上传图片 * * @param request * @param file * @return * ...

  9. 图片上传并显示(兼容ie),图片大小判断

    图片上传并显示(兼容ie),图片大小判断 HTML <div id="swf" style="margin: 0 auto;text-align: center;& ...

随机推荐

  1. 最短路——Dijkstra和Floyd

    Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要 ...

  2. java 02 内部类

  3. 一、mysql简述

    该套讲义参考动力节点郭鑫老师的mysql视频整理所得 1.DBMS--数据库管理系统  Data Base Management System eg: mysql数据库管理系统 2.DB--数据库/仓 ...

  4. 性能测试之Jmeter学习(二)

    一.Jmeter的基本操作 1.添加|移除测试元件 2.加载和保存测试元件 3.配置测试对中的测试元件 4.保存测试计划 5.运行测试计划 6.终止测试 7.错误报告 二.Jmeter体系结构 注释: ...

  5. Flutter实战视频-移动电商-11.首页_屏幕适配方案讲解

    11.首页_屏幕适配方案讲解 国人写的屏幕适配插件: https://github.com/OpenFlutter/flutter_screenutil 最新版本是0.5.1 在pubspec.yam ...

  6. Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例

    Code在Oauth2.0和OpenId Connect里面分别叫做不同的名字 OAuth只介绍了如何授权.没有介绍如何身份认证. OpenId Connect:既规定了怎么授权,也规定了怎么身份认证 ...

  7. 关于weblogic 10.3.6.0 的漏洞复现(2)

    今天小R又学会了一个工具的使用,而且这个工具很强大很强大. 待会介绍. 一.需要的试验环境: 一台宿主机,虚拟机(kali+window2008或其他版本的windows)  1.宿主机需要的工具:B ...

  8. T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解

    http://www.fjutacm.com/Problem.jsp?pid=1251 想了很久,一开始居然还直接枚举因子d,计算重复了. 首先你要找与n的最大公因子大于m的x的个数. \[\sum\ ...

  9. lightoj 1074【spfa判负环】

    题意: 给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出& ...

  10. Metabolic and gut microbial characterization of obesity-prone mice under high-fat diet (文献分享一组-赵容丽)

    题目:高脂饮食下易肥胖小鼠的代谢和肠道微生物特性研究 Metabolic and gut microbial characterization of obesity-prone mice under ...