界面上传图片时考虑到可能会有用户的图片名称一致,使用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. liunx目录/etc下相关配置

    这些都是比较有实用性的系统配置,收藏下,以备不时之需!以下是etc下重要配置文件解释: 1./etc/hosts  #文件格式: IPaddress hostname aliases #文件功能: 提 ...

  2. HTTP Status 500 - Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

    如果在service类上面没有添加注解,出现异常 @Transactional

  3. html5 WebWorkers 防止浏览器假死

    在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出“脚本运行时间过长“的提示框,如果出现这种情况说明你的脚本已经失控了. 一个浏览器至少存在三个线程:js引擎线程(处理js).GUI渲 ...

  4. 阿里云CDNapi

    #!/usr/bin/env python from aliyunsdkcore import client import json from aliyunsdkcdn.request.v201411 ...

  5. 【旧文章搬运】从XP到Win7看Windows对象管理的变化(概述)

    原文发表于百度空间,2010-08-01========================================================================== 今天花了一 ...

  6. 8个超炫的 Web 效果

    CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果.你在上面可以在线展示自己的作品,也可以看到其他人在网页中实现的各种令人惊奇的效果. 今 ...

  7. 【Linux学习】Linux文件系统5—查看文件内容命令

    Linux文件系统5-查看文件内容命令 cat: 由第一行开始显示文件内容 more: 一页一页地显示文件内容,空格键可以继续翻页显示下一页内容 less:与more类似,但是可以往前翻页 head: ...

  8. 4.2 手写Java PriorityQueue 核心源码 - 实现篇

    上一节介绍了PriorityQueue的原理,先来简单的回顾一下 PriorityQueue 的原理 以最大堆为例来介绍 PriorityQueue是用一棵完全二叉树实现的. 不但是棵完全二叉树,而且 ...

  9. HTML5标签不兼容ie怎么办?

    HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 比较常用的HTML5的新标签元素有: <hea ...

  10. 在 beforeSend中设置ajax请求的Content-type

    $.ajaxSetup({        beforeSend: function (xhr, settings) {            if (settings.type == "PO ...