首页 > 其他分享 >文件上传下载

文件上传下载

时间:2023-05-21 17:44:33浏览次数:38  
标签:文件 String saveFile url 上传下载 uploadFile uuid

文件上传

/**
 * 文件上传
 * @return
 */
@PostMapping(value = "/upload")
public String fileUpload(@RequestParam MultipartFile file) throws IOException {

    //获取源文件名
    String originalFilename = file.getOriginalFilename();
    //获取文件类型
    String fileType = FileUtil.extName(originalFilename);
    //获取文件大小
    long fileSize = file.getSize();

    String uuid = splitName(originalFilename);
    //存储到磁盘 父目录/files/
    File uploadParentFile = new File(fileUploadPath);

    //图片文件xxxx.png
    File uploadFile = new File(fileUploadPath + uuid);
    //判断文件是否存在然后创建一个
    if(!uploadParentFile.exists()){
        uploadParentFile.mkdir();
    }

    String url = null;
    // 获取文件md5
    String md5;



    file.transferTo(uploadFile);
    md5 = SecureUtil.md5(uploadFile);

    UserFile dbFiles = getFileByMd5(md5);

    //文件存在
    if(dbFiles != null){
        url = dbFiles.getFileurl();
        uploadFile.delete();
    } else {
        url = "http://localhost:9999/file/"+uuid;
        // 存储到数据库,
        UserFile saveFile = new UserFile();
        saveFile.setFilename(originalFilename);
        saveFile.setFiletype(fileType);
        saveFile.setFilesize(fileSize/1024);
        saveFile.setFileurl(url);
        saveFile.setMd5(md5);
        fileMapper.insert(saveFile);
    }
    

    if(StringUtils.isEmpty(url)){
        System.out.println("url is empty>>>>>>>>>>>>>>>>");
    } else {
        System.out.println("url>>>>>>>>>>>>>>>>>>>" + url);
    }
    
    return url;
}

 


文件下载

/**
 * 下载文件
 * @param uuid
 * @param response
 */
@GetMapping(value = "/{uuid}")
public void download(@PathVariable String uuid, HttpServletResponse response){

    //根据文件唯一标识获取文件
    File uploadFile = new File(fileUploadPath + uuid);

    try {
        //设置输出格式
        ServletOutputStream os = response.getOutputStream();
        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(uuid,"UTF-8"));
        response.setContentType("application/octet-stream");

        //通过流的方式进行读取
        os.write(FileUtil.readBytes(uploadFile));
        os.flush();
        os.close();
    } catch (IOException e) {
        e.printStackTrace();
    }


}

 

 

标签:文件,String,saveFile,url,上传下载,uploadFile,uuid
From: https://www.cnblogs.com/qijiangforever/p/17418879.html

相关文章

  • 13-1 udp和internet层协议 13-2IP地址组成和分类13-4 网卡配置文件和命令 13-5 网络理
    一、查看当前机器广播的地址和mac[root@centos8~]#arp-n查看当前机器的广播地址[root@centos8~]#tcpdump-ieth0arp-nn抓包[root@centos8~]#ipaa10.0.0.100/24deveth0添加多网卡命令[root@centos8~]#arping10.0.0.100查看IP有没有被占用二、查看相关包有......
  • Linux目录下明明有可执行文件却提示找不到,“No such file or directory”
    明明一切正常,findls均可找到,权限也是777 检查文件的头部:readelf-hrepeat发现machine条目:Machine:    Intel80386问题出在了文件是32位的,但是虚拟机是64位的 如果想要运行文件,需要安装32位程序的运行架构:$sudoyuminstallxulrunner.i686$su......
  • docker 的overlayFS 文件系统
    referto:https://juejin.cn/post/7112352737051803684一、overlay相关介绍Docker 底层有三驾马车,Namespace、CGroup 和 UnionFS(联合文件系统),UnionFS 是 Docker 镜像的基础。UnionFS(联合文件系统) 是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一......
  • 文件上传注入
      、 ......
  • easyExcel读写入csv文件
    写入:Filefile=newFile(System.getProperty("java.io.tmpdir")+File.separator+"aa.csv");ExcelWriterexcelWriter=EasyExcelFactory.write(file).excelType(ExcelTypeEnum.CSV).charset(Charset.forName("GBK"))......
  • 前端大文件分片上传
    前端大文件分片上传需要将文件切割成若干个片段,然后将每个片段上传到服务器,最终在服务端将所有的片段合并成完整的文件。下面是一个前端大文件分片上传的示例:将文件切割成若干个片段。functionsplitFile(file,chunkSize){letfileSize=file.size;letstart=0;......
  • org.apache.jasper.JasperException: /pages/role-list.jsp (行.: [145], 列: [8]) 根
    org.apache.jasper.JasperException:/pages/role-list.jsp(行.:[145],列:[8])根据标记文件中的TLD或attribute指令,attribute[items]不接受任何表达式 web.xml中版本号不兼容产生的问题;解决方法:<%@taglibprefix=“c”uri=“http://java.sun.com/jstl/core”%>改为<%@t......
  • ubuntu 下的文件系统initramfs解压缩
    ubuntu下的文件系统initramfs解压缩_lsinitramfs_Robert_Y_Zhang的博客-CSDN博客https://blog.csdn.net/weixin_40191420/article/details/107486888系统: ubuntu 16.04解压镜像:/boot/initrd.img-4.15.0-107-generic需要额外安装的工具:sudoapt-getinstallbinwalk-y使......
  • Git Bash 上传本地文件到Gitee(AI助力解决问题)
    前言(PS:文章前言由Chatgpt所写)Gitee是一个基于Git的代码托管和开发协作平台,它提供了代码仓库、代码审查、持续集成/持续部署(CI/CD)、项目管理、问题跟踪等功能。用户可以在Gitee上创建自己的代码仓库,上传代码并与团队成员协作开发。GitBash是一个基于Git的命令行工具,它允......
  • SpringBoot读取Yml配置文件工具类
    SpringBoot读取Yml配置文件工具类在某些特定的环境,需要在非SpringBean中读取Yml文件,可以使用以下方式读取:需要依赖<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>24.1-jre</v......