界面上传图片时考虑到可能会有用户的图片名称一致,使用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. 「UVA10298」 Power Strings(KMP

    题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 abcd aaaa ababab . 输出样例#1: 复制 1 4 3 题解 Luogu的题解 这里是对目前 ...

  2. SSH框架中hibernate 出现 user is not mapped 问题

    SSH框架中hibernate 出现 user is not mapped 问题      在做SSH框架整合时,在进行DAO操作时.这里就只调用了chekUser()方法.运行时报  user is ...

  3. Autoware docker 环境安装

    环境: ubuntu 16.04    GPU:GeForce 1070   nvidia 驱动型号:nvidia_driver_390.67 安装参考网址: https://github.com/C ...

  4. 用HTML 5打造斯诺克桌球俱乐部(1) – 51CTO.COM

    本文介绍了如何利用HTML5技术来打造一款非常酷的斯诺克桌球游戏,文章中详细地列… 查阅全文 ›

  5. 1.22-1.24 Oozie企业使用案例

    一.将hive的表数据用sqoop抽取到mysql 1.编写oozie workflow和Coordinator ## [root@hadoop-senior oozie-apps]# pwd /op ...

  6. python 之生产者消费者模型

    进程实现: import time,random from multiprocessing import Process,Queue def producer(name,q): count= 0 wh ...

  7. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs&qu ...

  8. Laravel框架之Request操作

    public function request(Request $request){ //1.取值 //echo $request->input('name'); //echo $request ...

  9. 668. Kth Smallest Number in Multiplication Table

    Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number ...

  10. CodeForces 363D 【二分+贪心】

    思路: 一开始是没有办法贪心的,但是答案是可以二分的,因为窝能买k辆车的话,窝就一定能买k-1辆车:而且我最好就是拿手上钱较多的那些人去买价格便宜的车,这样肯定是能买到最多的车,而且花的少,因为对于要 ...