编辑
2023-04-13
实用工具
00

简介

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。

FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件

编辑
2023-04-12
学习记录
00

使用项目地址

java
String projectPath = System.getProperty("user.dir"); File file = new File(projectPath + "/filename");

获取项目使用路径,在其下面创建一个文件夹俩存放内容、

使用classes目录

java
String unzipPath=RecMrDetailIndexController.class.getResource("/unzip/").getPath();

在项目resources目录下先创建一个文件夹,存放一些文件,打包时会打进targer-classes目录下面,可以直接在classes下找到自己创建的文件夹,将文件存放到里面

编辑
2023-04-12
学习记录
00

简介

先读取压缩文件到本地,然后解压,再向前端输出文件夹中的内容

读取

这部分忽略,可以直接查看之前的文章,直接从ftpUtil获取文件,得到ByteArrayOutputStream开始,讲解

下载文件并解密

java
//通过zip获取pdf public ByteArrayOutputStream getPdfBase64ByZip(ByteArrayOutputStream fileData,String fileName) throws Exception { ByteArrayInputStream inputStream = new ByteArrayInputStream(fileData.toByteArray()); String base64= Base64Encoder.encode(IOUtils.toByteArray(inputStream)); System.out.println(base64); String unzipPath=RecMrDetailIndexController.class.getResource("/unzip/").getPath(); String zipName=unzipPath+fileName.split("as")[0]+"zip"; FileUtils.base64ToFile(zipName,base64); ZipUtil.unZip(zipName,unzipPath,"mars"); String pdfName=unzipPath+fileName.split("as")[0]+"pdf"; System.out.println("pdfName"+pdfName); File file=new File(pdfName); FileInputStream fileInputStream=new FileInputStream(file); byte[] bytes=IOUtils.toByteArray(fileInputStream); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bytes.length); outputStream.write(bytes, 0, bytes.length); return outputStream; }
编辑
2023-04-12
学习记录
00

简介

业务需要将ftp文件压缩加密并且转存,先读取ftp源文件再写入临时目录,然后在临时文件中加密压缩,再通过ftp上传,清除临时目录中的文件

读取

java
public String getPdfByFtpUrl(RecTypeDictStorageEntity storageEntity,ViewArchiveDocumentsEntity viewArchiveDocuments) { ByteArrayOutputStream fileData=new ByteArrayOutputStream(); FtpUtil ftpUtil = new FtpUtil(); String ftpConfig = "ftp://USER:PWD@IP:PORT"; ftpConfig = ftpConfig.replace("IP", storageEntity.getFtpIp()) .replace("USER", storageEntity.getFtpUser()) .replace("PWD", storageEntity.getFtpPwd()) .replace("PORT", storageEntity.getFtpPort()); ftpUtil.getConn(ftpConfig); String remoteFile = viewArchiveDocuments.getDocfile().substring(0, viewArchiveDocuments.getDocfile().lastIndexOf("/") + 1); String fileName = viewArchiveDocuments.getDocfile().substring(viewArchiveDocuments.getDocfile().lastIndexOf("/") + 1); try { boolean result = ftpUtil.fileExist(remoteFile, fileName); if (result) { fileData = ftpUtil.fileGet(remoteFile, fileName); } } catch (Exception e) { e.printStackTrace(); } finally { ftpUtil.ftpDisconnect(); } if (fileData!=null) { try { byte[] fileArray=fileData.toByteArray(); ByteArrayInputStream inputStream = new ByteArrayInputStream(fileArray); return Base64.getEncoder().encodeToString(IOUtils.toByteArray(inputStream)); } catch (Exception ex) { logger.info(ex.getMessage()); return ""; } } logger.info("找不到文件,获取不了文件信息"); return ""; }
编辑
2023-04-11
遇到的问题
00

base64转换错误

java
byte[] bytes = Base64.getDecoder().decode(base64Str);

改成

java
byte[] bytes = Base64.getMimeDecoder().decode(base64Str);