Skip to main content

daravel_medialibrary 1.25.0 copy "daravel_medialibrary: ^1.25.0" to clipboard
daravel_medialibrary: ^1.25.0 copied to clipboard

Files and images attached to Daravel models, on spatie/laravel-medialibrary's media table and file layout, with image conversions in pure Dart.

example/main.dart

import 'package:daravel/daravel.dart';
import 'package:daravel_medialibrary/daravel_medialibrary.dart';

/// A post with a cover image and a thumbnail made as it is uploaded.
final class Post extends Model with InteractsWithMedia {
  static final ModelDefinition<Post> definition = ModelDefinition<Post>(
    table: 'posts',
    factory: Post.new,
    fillable: ['title'],
    observers: [MediaObserver<Post>()],
  );

  @override
  ModelDefinition<Post> get modelDefinition => Post.definition;

  @override
  void registerMediaCollections() {
    addMediaCollection('cover').singleFile();
  }

  @override
  void registerMediaConversions([Media? media]) {
    addMediaConversion('thumb').fit(Fit.crop, 300, 200).nonQueued();
  }
}

/// `POST /posts/{post}/cover` with a multipart `cover` field stores the
/// image under `storage/app/public/<media id>/` and answers its URLs.
Application createApp() =>
    Application.configure(basePath: '.')
        .withMediaLibrary()
        .withModels([Post.definition])
        .withMigrations(const [CreateMediaTable()])
        .withRouting(
          api: (router) {
            router.post('/posts/{post}/cover', (Request request) async {
              final post = (await Post.definition.query().find(
                request.param<int>('post'),
              ))!;
              final media = await post
                  .addMedia((await request.file('cover'))!)
                  .toMediaCollection('cover');
              return {'url': media.url(), 'thumb': media.url('thumb')};
            });
          },
        )
        .create();

Future<void> main() async => Application.serveWith(createApp);
0
likes
160
points
540
downloads

Documentation

Documentation
API reference

Publisher

verified publisherframework.daravel.dev

Weekly Downloads

Files and images attached to Daravel models, on spatie/laravel-medialibrary's media table and file layout, with image conversions in pure Dart.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#media #uploads #images #server #backend

Funding

Consider supporting this project:

github.com

License

MIT (license)

Dependencies

args, daravel, dartisan_cli, image, path

More

Packages that depend on daravel_medialibrary