热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

基于springboot实现文件上传

这篇文章主要为大家详细介绍了基于springboot实现文件上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了基于springboot的文件上传的具体代码,供大家参考,具体内容如下

第一步:在vo包下创建上传前端响应类

import com.alibaba.druid.filter.AutoLoad;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 上传响应参数
 * @param 
 */
//以下是lombok插件注解
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Resp {
 //返回状态码 如 200 403
 private String code;
 //返回信息
 private String Msg;
 //也可定义为 Object body 都表示任意类型的意思
 private E body;//模板类型

 /**
  * 成功时候方法
  * @param body
  * @param 
  * @return
  */
 public static Resp success(E body){
  return new Resp("200","上传成功!",body);
 }

 /**
  * 上传失败时的方法
  * @param code
  * @param msg
  * @param 
  * @return
  */
 public static Resp fail(String code,String msg){
  return new Resp(code,msg,null);
 }
}

第二步:在controller层接收前端上传的文件

import com.qf.springboot_ssm_day02.service.UploadService;
import com.qf.springboot_ssm_day02.vo.Resp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

@Controller

public class uploadController {
 @Autowired
 private UploadService uploadService;
 @RequestMapping(value = "upload",method = RequestMethod.POST)
 @ResponseBody
 //返回类型根据自定义的返回类型 不一定和我一样 
 public Resp upload(@RequestParam("file")MultipartFile file){

  return uploadService.upload(file);
 }

}

第三步:在servcie包下建立upload接口及其实现类处理业务

import com.qf.springboot_ssm_day02.vo.Resp;
import org.springframework.web.multipart.MultipartFile;
/**
*上传业务类
*/
public interface UploadService {
 //上传接口
 Resp upload(MultipartFile file);
}
import com.qf.springboot_ssm_day02.service.UploadService;
import com.qf.springboot_ssm_day02.vo.Resp;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

/**
 * 上传业务实现类
 */
@Service
public class UploadServiceImpl implements UploadService {

 @Override
 public Resp upload(MultipartFile file) {
  //判断上传的文件是不是空
  if (file.isEmpty()){
   return Resp.fail("400","文件为空!");
  }
  //文件不为空的情况
  //获得原始文件名(前端传过来的文件名) 带有拓展名
  //原始文件名存在一定问题
  String OriginalFilename=file.getOriginalFilename();
  //根据 时间戳+拓展名=服务器文件名
  // 确定服务器文件名(经过字符操作加上拓展名)
  String fileName= System.currentTimeMillis()+"."+OriginalFilename.substring(OriginalFilename.lastIndexOf(".")+1);
  //控制台查看服务器文件名
  System.out.println(fileName);
  //确定文件储存位置
  // 文件保存路径 注意最后加上双反斜杠 转义字符所有双反斜杠
  String filePath="F:\\Test\\";
  //目标文件路径 (实际创建在硬盘的文件)
  File dest=new File(filePath+fileName);
  //判断dest的父目录是否存在
  if(dest.getParentFile().exists())
   dest.getParentFile().mkdirs();

  try {
    //前端传过来的文件拷贝在本地
    file.transferTo(dest);
   }catch (Exception e){
    e.printStackTrace();
    return Resp.fail("500",OriginalFilename+"上传失败!");

   }
   //上传成功 返回前端穿过来的文件名
   return Resp.success(fileName);


 }
}

第四步:postman测试上传

可以看到文件以及成功上传到本地啦!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 数据结构与算法:HyperLogLog 统计、布隆过滤器应用、缓存机制挑战及解决方案、Redis 性能优化与监控、哨兵模式、版本控制工具 Git
    本文探讨了数据结构与算法在实际应用中的多个方面。首先介绍了HyperLogLog算法,用于高效地进行基数统计,能够准确估算大规模数据集中的唯一元素数量。接着讨论了布隆过滤器的应用,该过滤器在空间效率和查询速度上具有显著优势,适用于大数据场景下的快速成员检测。此外,文章分析了缓存机制面临的挑战及其解决方案,包括LRU和LFU等策略,并详细阐述了Redis的性能优化与监控方法,如使用哨兵模式实现高可用性。最后,介绍了版本控制工具Git的基本操作和最佳实践,帮助开发者有效管理代码版本。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • 谈起RESTFUL大家未免都耳熟能详,但是要介绍一下它是什么,可能就是停留在听过或者见过的阶段了。一贯喜欢以通俗的语言来消化知识的小马自然不会放过它了& ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 深入解析Postman内置变量的实用技巧与示例代码
    本文详细探讨了Postman内置变量的实用技巧和应用案例,通过具体的示例代码,全面解析了这些变量在实际开发和测试中的使用方法,为读者提供了宝贵的学习和参考资源。 ... [详细]
  • 本文深入探讨了在Spring Boot中处理RESTful风格的表单请求的方法,包括请求参数处理、请求映射以及RESTful设计原则的应用。文章详细介绍了如何利用HTTP动词(如GET、POST、PUT、DELETE)来操作资源,并结合Spring Boot的注解(如@GetMapping、@PostMapping等)实现高效、清晰的请求处理逻辑。通过实例分析,展示了如何在实际项目中应用这些技术,提高开发效率和代码可维护性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 全面解析:安检利器的高效应用与技术特点
    全面解析:安检利器的高效应用与技术特点 ... [详细]
  • postman使用教程6引用随机变量
    前言在接口测试中,有些接口的请求参数具有唯一性,比如注册接口,注册一个账号后就不能重复注册了。为了能重复执行这个接口,可以 ... [详细]
  • FastRequest1.1.4正式发布,优化了诸多操作的交互和用户体验,更新内容如下:curlsupport(支持curl拷贝)supportaddparamstoheaderfrom(支持了将参数从response添加到header)supportprettyandraw ... [详细]
  • Apifox使用攻略
    目录前言 ... [详细]
  • postman使用环境变量
    变量postman提供了变量设置,有四种变量类型本地变量全局变量环境变量数据变量什么是环境变量环境变量指在不同环境,同一个变量值随着环境不同而变化,比如在测试环境时,host为:d ... [详细]
  • 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对 ... [详细]
  • Postman工具使用教程
    Postman的基础功能1.GET请求GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别 ... [详细]
author-avatar
木易_迪迪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有