我正在Amazon Elastic bean服务器上部署Web应用程序,并且正在使用免费版本。我想在spring框架中解析JSON响应后将PDF文件保存在服务器上。如何将pdf文件保存在亚马逊弹性豆上?我不想将其保留在数据库中。
答案 0 :(得分:1)
要存储文件,我建议使用S3存储桶。使用amazon SDK来做到这一点。对于Java,请参见com.amazonaws.services.s3 putObject Interface AmazonS3。
请参阅这些不错的文章https://medium.com/oril/uploading-files-to-aws-s3-bucket-using-spring-boot-483fcb6f8646
答案 1 :(得分:0)
如果我是您,我会使用Spring Content。这样,您就不必担心如何自己实现任何代码,并且现在和将来在哪里存储图像都具有更大的灵活性。
对于现有的Spring MVC应用程序来说很简单:
pom.xml
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>spring-content-fs</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>spring-content-rest</artifactId>
<version>0.2.0</version>
</dependency>
StoreConfig.java
@Configuration
@EnableFilesystemStores
@Import(RestConfiguration.class)
public class EnableFilesystemStoresConfig {
@Bean
File filesystemRoot() {
try {
return new File("/path/to/your/pdfs");
} catch (IOException ioe) {}
return null;
}
@Bean
FileSystemResourceLoader fileSystemResourceLoader() {
return new FileSystemResourceLoader(filesystemRoot().getAbsolutePath());
}
}
PdfStore.java
@StoreRestResource(path="pdfs")
public interface PdfStore extends Store<String> {
}
就是这样。现在,您将在/pdfs
获得一个功能齐全(基于POST,PUT,GET,DELETE)的REST pdf服务,该服务将使用您的PdfStore来存储(和检索)在{{1} }。
所以...
/path/to/your/pdfs
将上传example-pdf.pdf并将其存储在您服务器上的curl --upload-file example-pdf.pdf /pdfs/example-pdf.pdf
中,然后:
/path/to/your/pdf/example-pdf.pdf
将返回下载。
如果您要将图像存储在S3存储桶中,则只需将第一个依赖项更改为spring-content-s3并将GET /pdfs/example-pdf.pdf
更新为@Configuration
并添加连接详细信息一个S3存储桶参考指南位于this page的底部。
HTH
答案 2 :(得分:0)
我认为这可能会有所帮助,以下代码可用于下载文件。
@RequestMapping(value="download", method=RequestMethod.GET)
public void downloadPDFResource( HttpServletRequest request,
HttpServletResponse response)
{
//If user is not authorized - he should be thrown out from here itself
//Authorized user will download the file
String dataDirectory = request.getServletContext().getRealPath("/WEB-INF/PDF/");
Path file = Paths.get(dataDirectory, "file.pdf");
if (Files.exists(file))
{
response.setContentType("application/vnd.android.package-archive");
response.addHeader("Content-Disposition", "attachment; filename=downloadedfile.pdf");
try
{
Files.copy(file, response.getOutputStream());
response.getOutputStream().flush();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}