首页 > 社交 > 科普中国

有了这个开源工具后,我五点就下班了

常驻编辑 科普中国 2022-09-25 工具   表头   轮子   文件系统   实体   框架   功能   文件   项目   数据

  「具体使用案例如下:」QnK拜客生活常识网

@PostMapping("/ftp/upload")
    public void upload() {
        try {
            FtpUploadParam param = new FtpUploadParam();
            param.setHostname(ftpConfig.getServerHostname());
            param.setPort(ftpConfig.getServerPort());
            param.setUsername(ftpConfig.getServerUsername());
            param.setPassword(ftpConfig.getServerPassword());
            param.setWorkingPath(ftpConfig.getServerWorkingPath());
            param.setSaveName("xxx.mp3");
            InputStream in = new FileInputStream(new File("D:/uploadfile/like.mp3"));
            param.setInputStream(in);
            ftpUtils.upload(param);
        } catch (Exception e) {
            log.error("TestFtpServerController upload 错误:{}", e);
        }
    }

    @PostMapping("/ftp/download")
    public void download() {
        try {
            FtpDownloadParam param = new FtpDownloadParam();
            param.setHostname(ftpConfig.getServerHostname());
            param.setPort(ftpConfig.getServerPort());
            param.setUsername(ftpConfig.getServerUsername());
            param.setPassword(ftpConfig.getServerPassword());
            param.setWorkingPath(ftpConfig.getServerWorkingPath());
            param.setDownloadPath("D:/downloadFile/");
            param.setFileName("xxx.mp3");
            ftpUtils.download(param, "xxxx.mp3");
        } catch (Exception e) {
            log.error("TestFtpServerController download 错误:{}", e);
        }

    }

三、分布式文件系统工具

  「非结构化数据通常是使用文件的方式进行存储,这时候不可避免地要使用到文件系统进行管理。」 分布式文件系统工具使用了第三方开源框架seaweedfs进行搭建,可以实现程序上传,删除、下载、查询,并有文件分布式存储,避免单点故障,节约成本等特点。QnK拜客生活常识网

  前面也专门通过一篇文章讲解了:为何要使用seaweedfs框架搭建分布式文件系统的,感兴趣的读者可以通过下方链接进行查看:Gitee图床崩溃后,我使用Seaweedfs搭建了文件系统并封装成轮子开源QnK拜客生活常识网

  「部分源码如下:」QnK拜客生活常识网

/**
     * @description: 上传单个文件到文件服务器
     * @param: file
     * @return: 文件的fid + 文件的请全访问地址
     * @author: it
     */
    public String uploadFile(MultipartFile file) throws Exception {
        FileSource fileSource = getFileSource();
        FileTemplate fileTemplate = new FileTemplate(fileSource.getConnection());
        // 上传文件
        FileHandleStatus handleStatus = fileTemplate.saveFileByStream(file.getOriginalFilename(), file.getInputStream(), contentType);
        // 获取上传文件的访问地址
        String fileUrl = fileTemplate.getFileUrl(handleStatus.getFileId());
        // 关闭当前连接
        fileSource.shutdown();
        return handleStatus.getFileId() + StrUtil.DASHED + fileUrl;
    }
/**
     * @description: 根据文件下载文件
     * @param: fid
     * @param: response
     * @param: fileName
     * @author: it
     */
    public void downloadFileByFid(HttpServletResponse response, HttpServletRequest request, String fid, String fileName) throws Exception {
        FileSource fileSource = getFileSource();
        FileTemplate fileTemplate = new FileTemplate(fileSource.getConnection());
        StreamResponse fileStream = fileTemplate.getFileStream(fid);
        // 设置响应头
        response.setContentType(CommonConstant.CONTENT_TYPE);
        response.setCharacterEncoding(CommonConstant.UTF_8);
        String encodeFileName = buildingFileNameAdapterBrowser(request, fileName);
        response.setHeader(CommonConstant.CONTENT_DISPOSITION, CommonConstant.ATTACHMENT_FILENAME + encodeFileName);
        // 读取并写入到响应输出
        InputStream inputStream = fileStream.getInputStream();
        byte[] fileByte = new byte[inputStream.available()];
        inputStream.read(fileByte);
        response.getOutputStream().write(fileByte);
        response.getOutputStream().flush();
        fileSource.shutdown();
    }
    

相关阅读:

  • 微信深度清理工具在哪里进去
  • 皮沙发怎样清洗用什么工具
  • 科麦斯工具怎么样(科麦斯工具套装怎么样)
  • pe工具哪个好(微pe工具箱有哪些工具)
  • 工具在哪里找(绘画工具在哪里)
  • ftp软件哪个好(ftp客户端工具)
  • root工具哪个好用(安卓手机一键root软件哪个好)
  • ps渐变工具在哪里(ps渐变调整层在哪)
  • ps的魔法棒在哪里(2021版ps魔棒工具在哪)
  • ps魔法棒在哪里(电脑ps魔棒工具在哪里)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。