[Help] How do I post and store binary data correctly in Laravel?
from lonesomeCat@lemmy.ml to programming@programming.dev on 21 Jan 14:52
https://lemmy.ml/post/25035372

I have the following migration:

(Schema::create(‘user_images’,function(Blueprint $table){ $table->id(); $table->binary(‘image’); $table->unsignedBigInteger(‘user_id’); $table->foreign(‘user_id’)->references(‘id’)->on(‘users’); });)

And the following corresponding model:

`class UserImage extends Model { protected $fillable=[ ‘image’ ];

public function user():BelongsTo{
    return $this->belongsTo(User::class);
}

}`

I am trying to create new UserImage records with UserImage::create but it is always failing, I am sending the image data using curl:

curl -v -F image=@$1 $URL/api/users -H “Accept: application/json”

I have tried so many things but I got different SQL-related errors, I am not sure how am I supposed to encode the image data to get them stored, I know that accessing $request->image returns only a temporary path of the image on the HDD.

#programming

threaded - newest

tobogganablaze@lemmus.org on 21 Jan 15:12 collapse

Are you set on storing your image in the database?

If not I’d recommend the spatie media library:

spatie.be/docs/…/introduction

lonesomeCat@lemmy.ml on 21 Jan 15:22 collapse

I’m not, but shouldn’t this be an easy task ootb in Laravel?

tobogganablaze@lemmus.org on 21 Jan 15:36 collapse

I guess it should be, but I’ve never tried storing files in the DB.

It’s rather easy upload files to the file system with the Storage Facades, but that doens’t have an build in way to associate the files with models. That’s where the spatie media library comes in.