## Media Library Media is a [Golang](http://golang.org/) library that supports the upload of *files*/*images*/*videos* to a filesystem or cloud storage as well as *linked videos* (i.e. YouTube, Vimeo, etc.). The plugin includes: - cropping and resizing features for images. - optional multiple sizes for each media resource. - Accessibility helpers. ###### File Types Media accepts any and every file type, yet it associates certain file types as *images* or *videos* so as to provide helpers supporting those media's specific needs. Images: .jpg, .jpeg, .png, .tif, .tiff, .bmp, .gif Videos: .mp4, .m4p, .m4v, .m4v, .mov, .mpeg, .webm, .avi, .ogg, .ogv ## Usage Media depends on [GORM](https://github.com/go-gorm/gorm) models as it is using [GORM](https://github.com/go-gorm/gorm)'s callbacks to handle file processing, so you will need to register callbacks first: ```go db, err := gorm.Open(postgres.Open(os.Getenv("DB_PARAMS")), &gorm.Config{}) media.RegisterCallbacks(db) sess := session.Must(session.NewSession()) oss.Storage = s3.New(&s3.Config{ Bucket: os.Getenv("S3_Bucket"), Region: os.Getenv("S3_Region"), Session: sess, }) ``` ### Use media box in a model ```go type Product struct { gorm.Model HeroImage media_library.MediaBox `sql:"type:text;"` } ``` ### Configure media box ```go import ( media_view "github.com/qor/qor5/media/views" ) b := presets.New() media_view.Configure(b, db) p := b.Model(&Product{}) ed := p.Editing( "HeroImage") ed.Field("HeroImage").WithContextValue( media_view.MediaBoxConfig, &media_library.MediaBoxConfig{ AllowType: "image", Sizes: map[string]*media.Size{ "thumb": { Width: 400, Height: 300, }, }, }) ``` ## License Released under the [MIT License](http://opensource.org/licenses/MIT).