Skip to content

Entity Files

Entity Files lets you attach files to JPA entities and store binary content either:

  • on local disk (default), or
  • on AWS S3 (optional module).

It also includes UI actions to manage files from CRUD views.

<dependency>
<groupId>tools.dynamia.modules</groupId>
<artifactId>tools.dynamia.modules.entityfiles</artifactId>
<version>26.4.0</version>
</dependency>

<dependency>
<groupId>tools.dynamia.modules</groupId>
<artifactId>tools.dynamia.modules.entityfiles.ui</artifactId>
<version>26.4.0</version>
</dependency>

<dependency>
<groupId>tools.dynamia.modules</groupId>
<artifactId>tools.dynamia.modules.entityfiles.s3</artifactId>
<version>26.4.0</version>
</dependency>
implementation 'tools.dynamia.modules:tools.dynamia.modules.entityfiles:26.4.0'
implementation 'tools.dynamia.modules:tools.dynamia.modules.entityfiles.ui:26.4.0'
implementation 'tools.dynamia.modules:tools.dynamia.modules.entityfiles.s3:26.4.0'
Terminal window
pnpm add @dynamia-tools/files-sdk @dynamia-tools/sdk
import { DynamiaClient } from '@dynamia-tools/sdk';
import { FilesApi } from '@dynamia-tools/files-sdk';
const client = new DynamiaClient({ baseUrl: import.meta.env.VITE_API_URL, token: '...' });
const files = new FilesApi(client.http);
const download = await files.download('invoice.pdf', 'uuid-here');
const url = files.getUrl('images/logo.png', 'uuid-here');
import jakarta.persistence.Entity;
import jakarta.persistence.OneToOne;
import tools.dynamia.modules.entityfile.domain.EntityFile;
@Entity
public class Person {
@OneToOne
private EntityFile photo;
@OneToOne
private EntityFile cover;
}
import java.io.File;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import tools.dynamia.modules.entityfile.UploadFileInfo;
import tools.dynamia.modules.entityfile.service.EntityFileService;
@Component
public class PersonFilesService {
@Autowired
private EntityFileService entityFileService;
public void attachPhoto(File file, Person person) {
var info = new UploadFileInfo(file);
var photo = entityFileService.createEntityFile(info, person);
person.setPhoto(photo);
}
}