Java 从S3下载Thymeleaf模板
我目前正在S3中存储和下载我的ThymileAF模板 我使用以下函数从S3检索模板:Java 从S3下载Thymeleaf模板,java,spring-boot,amazon-s3,thymeleaf,flying-saucer,Java,Spring Boot,Amazon S3,Thymeleaf,Flying Saucer,我目前正在S3中存储和下载我的ThymileAF模板 我使用以下函数从S3检索模板: public String getTemplateFile(String name, File localFile) { ObjectMetadata object = s3Client.getObject(new GetObjectRequest(connectionProperties.getBucket(), name), localFile); boolean success
public String getTemplateFile(String name, File localFile) {
ObjectMetadata object = s3Client.getObject(new GetObjectRequest(connectionProperties.getBucket(), name), localFile);
boolean success = localFile.exists() && localFile.canRead();
return localFile.getPath();
}
完成此操作后,文件将成功下载到所需位置
但是当试图从FlyingSaucer PDF生成器访问该文件时,该文件不存在,尽管它已在文件位置路径中下载。(我可以打开文件…文件在那里,但函数没有看到它)
当我一次又一次地运行程序时,我得到了相同的结果。但当我停止程序并再次运行它时,一切都正常,因为程序现在可以识别上次执行的文件
这听起来像是一个异步函数问题
有人知道我该怎么解决这个问题吗
提前谢谢
编辑(根据建议)
新功能:相同的结果:
(创建文件后,从S3下载成功)
java.io.FileNotFoundException:无法解析ClassLoader资源“static/templates/template.html”
检查javadoc
我没有看到方法签名ObjectMetadata getObject(GetObjectRequest GetObjectRequest,字符串文件)
有
ObjectMetadata getObject(GetObjectRequest getObjectRequest,
File destinationFile)
其中提供文件(而不是字符串)作为第二个参数。在尝试读取文件之前,请确保未打开该文件进行写入 检查javadoc
我没有看到方法签名ObjectMetadata getObject(GetObjectRequest GetObjectRequest,字符串文件)
有
ObjectMetadata getObject(GetObjectRequest getObjectRequest,
File destinationFile)
其中提供文件(而不是字符串)作为第二个参数。在尝试读取文件之前,请确保未打开该文件进行写入 谢谢你的回答。我听从了你的第一个建议,但得到了同样的结果。我还用方法签名更新了问题。谢谢回答。我听从了你的第一个建议,但得到了同样的结果。我还用方法签名更新了问题。
ObjectMetadata getObject(GetObjectRequest getObjectRequest,
File destinationFile)