我如何从 FTP 服务器获取 pdf 文件作为 Java spring mvc 项目的 base64 编码格式?

How can i get pdf files from FTP server as base64 encoding format on Java spring mvc project?

我正在尝试从 Java spring mvc 项目上的 FTP 服务器获取文件。我正在 windows 上学习,但我的 tomcat 服务器在 linux 机器上。以下代码 returns base64 编码文件并为前端创建了 base64 url,此文件暂时保留。此代码工作正常 windows 但在 linux 机器上工作不佳。在 windows 中获取 pdf 文件没有问题,在 linux 机器中已损坏。根据文件大小工作不同。

这导致 linux 机器,此文件在 FTP 的文件夹中没有问题。

这个结果在 windows 机器上

会不会是base64编码的问题?

public List<String> getMultipleBase64PDF(String workingDir) {
    List<String> fileList = new ArrayList<>();
    try {
        FTPFile[] files = client.listFiles(workingDir);
        for (FTPFile file : files) {
            if (file.getName().endsWith(".pdf")) {
                fileNames.add(file.getName());
            }
        }
        if (fileNames.size() > 0) {
            for (String filename : fileNames) {
                String encodedFile = "";
                InputStream is = client.retrieveFileStream( workingDir);
                File file = File.createTempFile("tmp", null);
                FileUtils.copyInputStreamToFile(is, file); 
                byte[] bytes = new byte[(int) file.length()];
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                bis.read(bytes, 0, (int) file.length());
                bis.close();
                encodedFile += new String(Base64.getEncoder().withoutPadding().encode(bytes), "UTF-8");
                fileList.add(encodedFile);
                file.delete();
                client.completePendingCommand();
            }
        }
        disconnect();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return fileList;
}

FTPClient 默认设置为 ASCII。在配置 FTPClient bean 时,尝试将客户端从使用 ASCII 切换为二进制,如下所示:

client.setFileType(FTP.BINARY_FILE_TYPE);