酷酷的嵩 2022-01-19 11:15 采纳率: 62.5%
浏览 151
已结题

springboot项目部署到Linux服务器 进行文件上传

项目在服务器上文件上传想放到jar包所在文件夹lib的同级文件夹dist的upload文件夹中,该如何实现

@RestController
@RequestMapping("/api/bbb")
public class TimeController {
        @PostMapping("/upload")
        public BaseResult upload(MultipartFile file){
            //获取文件名
            String fileName = file.getOriginalFilename();
            //获取文件后缀名
           /* String suffixName = fileName.substring(fileName.lastIndexOf("."));
            //重新生成文件名
            fileName = UUID.randomUUID()+suffixName;*/
            //指定本地文件夹存储
            String filePath = ".../dist/upload/";
            try {
                //将图片保存到static文件夹里
                file.transferTo(new File(filePath+fileName));
                String tarpath = "tar -xvf"+ fileName+"-.../dist/upload";
                Process process = Runtime.getRuntime().exec(tarpath);

                return new BaseResult("200","success","");
            } catch (Exception e) {
                e.printStackTrace();
                return new BaseResult("400","failed","");
            }
        }
    }

  • 写回答

1条回答 默认 最新

  • 酒一杯。 2022-01-19 11:23
    关注
    
    /**
         * 保存文件工具类
         * @param file 文件
         * @param storagePath 保存地址
         * @param fileName 文件名称
         * @return
         */
        public static  Boolean saveFile( MultipartFile file, String storagePath,  String fileName) throws Exception{
            //检查当前有没有传入的目录 如果有则不创建 ,反之创建目录
            Path path = Paths.get(storagePath);
            Boolean isCreate = null;
            if (!Files.exists(path)) {
                //创建目录
                Path directories = Files.createDirectories(path);
                isCreate = createFile(file, fileName, directories);
            } else {
                isCreate = createFile(file, fileName, path);
            }
            return isCreate;
        }
    
    private static Boolean createFile(MultipartFile file, String fileName, Path directories) {
            try {
                //获取输入流
                InputStream in = file.getInputStream();
                FileOutputStream fileOut = new FileOutputStream(new File(directories + "\\" + fileName));
                byte[] buf = new byte[1024 * 8];
                while (true) {
                    int read = 0;
                    if (in != null) {
                        read = in.read(buf);
                    }
                    if (read == -1) {
                        break;
                    }
                    fileOut.write(buf, 0, read);
                }
                fileOut.flush();
                fileOut.close();
                in.close();
            } catch (IOException e) {
                return false;
            }
            return true;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 1月19日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集