Как сохранить файл pdf на сервере Amazon Flexible Beanstalk? - PullRequest
0 голосов
/ 03 сентября 2018

Я развертываю веб-приложение на сервере Amazon Bean и использую бесплатную версию. Я хотел бы сохранить файл PDF на сервере после анализа ответа JSON в среде Spring. Как я могу сохранить PDF-файл на амазоне эластичный боб? Я не хочу хранить его в БД.

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

На вашем месте я бы использовал 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> {
  }

Вот и все. Теперь у вас будет полностью функциональный (POST, PUT, GET, DELETE) pEST-сервис на основе REST на /pdfs, который будет использовать ваш PdfStore для хранения (и извлечения) PDF-файлов, хранящихся на сервере эластичных бинов на /path/to/your/pdfs.

Итак ...

curl --upload-file example-pdf.pdf /pdfs/example-pdf.pdf

загрузит example-pdf.pdf и сохранит его в /path/to/your/pdf/example-pdf.pdf на вашем сервере, затем:

GET /pdfs/example-pdf.pdf

вернет загрузить его.

Если вы хотите вместо этого хранить изображения в корзине S3, все, что вам нужно сделать, это изменить первую зависимость на spring-content-s3, обновить @Configuration до @EnableS3Stores и добавить сведения о соединении для корзины S3 , Справочные руководства находятся внизу этой страницы .

НТН

0 голосов
/ 31 октября 2018

Я думаю, что это может помочь, ниже код, который вы можете использовать для загрузки файла.

@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();
            }
        }
    }
0 голосов
/ 03 сентября 2018

Для хранения файлов я предлагаю использовать ведро 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

https://www.baeldung.com/aws-s3-java

...