首页 > 解决方案 > 从不同来源调用相同的函数会导致不同的输出?如何?

问题描述

我有一个加载文件并返回“URL 安全”base64 字符串的基本函数。

public void getDocumentFromDMS() {
    DMS_Handler dms = new DMS_Handler();
    // Get the document using the DMS library
    dms.getDocument();
    // Convert Document to Base64
    // TODO for now get the document from the project
    try {
        InputStream documentInputStream = new FileInputStream("Doxis.pdf");
        byte[] documentBytes = IOUtils.toByteArray(documentInputStream);

        // Map information to IPP
        String base64Document = Base64.getEncoder().encodeToString(documentBytes);
        base64Document = URLEncoder.encode(base64Document, "UTF-8"); // This class contains static methods for converting a String to the application/x-www-form-urlencoded MIMEformat
        documentData.put("base64Document", base64Document);

        System.out.println(Arrays.toString(documentData.entrySet().toArray()));

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

如果我从我的 JUnit 测试中调用它可以完美运行并且图像 url 是正确的。

开始喜欢[base64Document=iVBORw0KGgoAAAANSUhEUgAACU

    public void testDocument() {
    DocumentHandler docHandler = new DocumentHandler();
    docHandler.getDocumentFromDMS();
}

但是如果我在 Tomcat 中部署后调用它

[base64Document=JVBERi0xLjQKJeLjz9MNCg0KMSAwIG

而且我在页面上看不到图像。

我调试并documentBytesbyte[] documentBytes = IOUtils.toByteArray(documentInputStream);.

这怎么可能?这是同一个文件。也许编码?

标签: java

解决方案


推荐阅读