java - 从不同来源调用相同的函数会导致不同的输出?如何?
问题描述
我有一个加载文件并返回“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
而且我在页面上看不到图像。
我调试并documentBytes
在byte[] documentBytes = IOUtils.toByteArray(documentInputStream);
.
这怎么可能?这是同一个文件。也许编码?
解决方案
推荐阅读
- javascript - 示例 node.js ftp 服务器?
- android - 使用自定义资源值(例如 int、float)的 Android Vector
- android - 如何使用刀柄在片段中注入视图模型模拟
- async-await - 如何使用 AsyncHTMLSession().run 的参数构建异步任务列表?
- sql - SQL 需要帮助来分配唯一编号或基于日期从最早到最新以及基于产品名称和价格的序列号
- sql-server - Laravel MSSQL 将数据类型 nvarchar 转换为 int 时出错。在窗户上
- schema - 具有 json、NIfi 数组的字段的 Avro Schema
- flutter - Flutter 2.0 getter 'xxxx' 的返回类型是 'dynamic' ,它不是类型 'List 的子类型
'它的二传手'xxxx' - python - SQLalchemy 在查询多条记录时不返回 BLOB
- pandas - 机器学习模型的 Numpy 输入大小(input_dim vs input_size)