# File Uploads
File and attachment uploads are done using the MOIREI\MediaLibrary\Upload class. Uploadable files must of be type Illuminate\Http\UploadedFile.
$uploadedFile = $request->file('file');
$file = (new Upload($uploadedFile))->save();
A new upload can be created using the make method
$file = Upload::make($uploadedFile)
->name('Birds image') // provide a presentment-friendment file name
->description('An example image of birds')
->private(true)
->save();
If you want to create and save an upload without making further changes to the instance, use the uploadFile method to create and save in one go.
$file = Upload::uploadFile($uploadedFile);
# Saving from URLs
External files can be sourced and saved with ease.
$file = Upload::fromUrl('https://cloudimage.io/../birds.jpg')
->location('external')
->save();
# Provide storage location
When an upload is created, you can set a location of your choice using the location or folder methods.
For file uploads only
$attachment = Upload::make($uploadedFile)
->location('Images/Products')
->save();
Or provide a folder
$file = Upload::make($uploadedFile)
->folder('Images/Products')
->save();
// or
$file = Upload::make($uploadedFile)
->folder(Folder::find(...))
->save();
Saving to non-root locations will create appropriate folders as necessary.
# Upload storage
By default, the uploader uses the active media storage to persist files. The storage method may be used to provide an alternative storage.
For files only
$file = Upload::make($uploadedFile)
->storage(MediaStorage::get(...))
->save();
# Max upload size
By default, the upload limits set in your configs is used to validate uploaded files and attachments. The follow with provide a temporal limit for the created upload.
$file = Upload::make($uploadedFile)
->maxSize(1 * 1024 * 1024) // 1MB
->save();
# Upload types
Similar to maxSize, methods allow and mime allwo to temporarily define allowed uploadable types. The following with allow png images and will throw an error for all other file types.
$file = Upload::make($uploadedFile)
->allow('png')
->save();
# Image manipulation
Uploaded image files can be resized, crop, converted to other formats or even filtered before they're saved.
$file = Upload::make($uploadedFile)
->resize(400, 400)
->convertTo('webp')
->apply([
\Intervention\Image\Filters\DemoFilter::class,
\App\Filters\GreyLangFilter::class => [30, 2], // with constructor args
])
->save();
See Intervention Image filters (opens new window) for how to create custom filters.
# Model-owned files
Uploaded files are by default available app-wide for any model. Uploaded files can be saved as private to a model instance.
$file = Upload::make($uploadedFile)
->for(Product::find(1))
->save();
Model-owned files do not appear in browse results by default.
# File metadata
Arbitrary metadata can be added to filed files using the withMeta method. Accepts both arrays and Collections.
For files only
$file = Upload::make($uploadedFile)
->withMeta([
'key-1' => 1,
])
->withMeta(collect([
'key-2' => 2,
]))
->save();