首页 > 其他分享 >下载本地文件

下载本地文件

时间:2023-10-10 10:12:53浏览次数:29  
标签:文件 本地 io file import MultipartFile public 下载

package com.chen.controller;

import com.chen.utils.MultipartFileToFileUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


@Slf4j
@CrossOrigin
@RestController
@Api(tags = "文件下载测试")
@RequestMapping("/multipartFileController")
public class MultipartFileController {


    @ApiOperation("下载文件")
    @PostMapping("downloadFile")
    public String downloadFile(@RequestParam("file")MultipartFile file){
        return MultipartFileToFileUtils.saveMultipartFile(file, "src/main/resources/template/");
    }
}
package com.chen.utils;


import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.UUID;

public class MultipartFileToFileUtils {

    /**
     * @param file
     * @param targetDirPath 存储MultipartFile文件的目标文件夹
     * @return 文件的存储的绝对路径
     */
    public static String saveMultipartFile(MultipartFile file, String targetDirPath) {

        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            return null;
        } else {

            /*获取文件原名称*/
            String originalFilename = file.getOriginalFilename();
            /*获取文件格式*/
            String fileFormat = originalFilename.substring(originalFilename.lastIndexOf("."));

            String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
            toFile = new File(targetDirPath + File.separator + originalFilename);

            String absolutePath = null;
            try {
                absolutePath = toFile.getCanonicalPath();

                /*判断路径中的文件夹是否存在,如果不存在,先创建文件夹*/
                String dirPath = absolutePath.substring(0, absolutePath.lastIndexOf(File.separator));
                File dir = new File(dirPath);
                if (!dir.exists()) {
                    dir.mkdirs();
                }

                InputStream ins = file.getInputStream();

                inputStreamToFile(ins, toFile);
                ins.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
            return absolutePath;
        }

    }

    //获取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除本地临时文件
     *
     * @param file
     */
    public static void deleteTempFile(File file) {
        if (file != null) {
            File del = new File(file.toURI());
            del.delete();
        }
    }

}

 

标签:文件,本地,io,file,import,MultipartFile,public,下载
From: https://www.cnblogs.com/chenTo/p/17753895.html

相关文章

  • obs studio录屏软件下载-OBS Studio最新版下载 安装包下载方式
    obsstudio是一款免费使用的屏幕录制类软件。使用obsstudio就可以轻松的进行各种不限制时间长度的高清录制,软件支持区域调整用户们可以开启舒适录制体验。软件地址:看置顶贴OBSStudio(obs工作室版)基本简介OBSStudio(以前称为OBSMultiplatform)是原始OBS的完全重写,主要目标是多平台......
  • obs软件官方版下载-OBS Studio下载 安装包下载方式
    OBS Studio(obs工作室版)给需要的用户朋友带来非常方便实用的直播辅助软件,随着直播行业越来越火爆,这款OBSStudio(obs工作室版)不仅可以让用户在不同的平台上方便直播更有稳定以及强大的性能等你来体验,软件功能多多体积小前值得一试。喜欢的朋友赶紧来下载吧!软件地址:看置顶贴使用......
  • OBS Studio专区_OBS Studio中文版下载 安装包下载方式
    OBSStudio中文版在架构上进行了重构,采用微内核+插件的形式进行开发。作者意图通过这种架构来独立出核心代码,将周边功能作为插件形式实现。这在一定程度上提高了项目的可维护性,也让新功能的扩展变得更加简单。OBSStudio本身内置了一些常用的插件,如窗口捕获、视频捕获设备、文本、......
  • obsstudio中文版下载-2023新版下载 安装包下载方式
    obsstudio介绍1、这是对OBS的全新改写。主要目标是多平台支持、更全面的特性集和更强大的API。虽然它仍处于早期阶段,但现在可以在Windows、Mac和Linux版本中使用。2、软件最终将支持许多OBS中没有的高级功能,如多流输出和场景预览,这些在当前版本中都有。3、在线商学院是完全免费的!......
  • obs studio软件-obs studio中文版下载 安装包下载方式
    obsstudio软件-obsstudio中文版下载安装包下载方式OBSStudio功能介绍1.高性能实时视频/音频捕获和混合。创建由多个源组成的场景,包括窗口捕获、图像、文本、浏览器窗口、网络摄像头、捕获卡等。2.设置无限数量的场景,您可以通过自定义转换无缝切换。3.直观的混音器,每个源都带有......
  • 国标GB28181安防视频平台EasyGBS视频分析增加历史音视频下载功能
    国标GB28181协议的实现者也可以提供历史音视频回放功能。具体回看步骤包括设备视音频文件检索和历史视音频回放。同时,前端设备录像功能也可以提供录像存储在国标设备端,如数字硬盘录像机(DVR)和网络硬盘录像机(NVR)上。对于国标GB28181安防视频平台EasyGBS增加历史音视频下载功能,可以......
  • python的pip包国内源下载安装
    pipinstall包-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.douban.com--命令镜像--直接使用这个安装项目中的依赖,国内网站pipinstall-rrequirements.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.douban.compipinstal......
  • python获取文件的最后一行
    #_*_coding:utf-8_*_importnumpyasnpimportosimportsysdeflistDirectory(path,list_path,filetype):forfileinos.listdir(path):file_path=os.path.join(path,file)ifos.path.isdir(file_path):continueelif......
  • 使用C#在Windows上压缩文件
    使用C#通过Zip实现文件的压缩可以设置输出文件的路径也可以留空,留空则会在压缩文件创建一个同名的.压缩包可以设置压缩包的密码可以设置压缩包的加密方式(ASE-256),可以使用LZMA但是加密码会报错可以设置压缩包的格式(zip),可以使用7z但是加密码会报错添加了密码最大长度的限......
  • 用pyyaml读取yaml文件做接口数据驱动
    importyaml##封装读取yaml文件类#classYamlconf:#def__init__(self,file_path):#"""file_path:yaml文件的路径"""#self.file_path=file_path#defload_yaml(self):#withopen(self.file_path,enco......