Jamie
Jamie

Reputation: 10886

Laravel file name database

In Laravel 5.3 I'm uploading files like this:

public function upload(Request $request, User $user, $directory)
{
    if($request->hasFile('attachment'))
    {
        $attachments = $request->file('attachment');
        foreach ($attachments as $attachment) {
            $fileName = $attachment->store('users/' . $user->id . '/' . $directory);
            $file = new File;
            $file->path = $fileName;
            $file->user_id = $user->id;
            $this->files()->save($file);
        }
    }
}

So it's being stored like this:

enter image description here

How do I store a random name (path) instead of a entire path?

(Random unique name something like: 7b11ae012907b5811cb6985d39e16052)

Upvotes: 1

Views: 521

Answers (2)

Jamie
Jamie

Reputation: 10886

I've done it like this:

public function upload(Request $request, User $user, $directory)
{
    if($request->hasFile('attachment'))
    {
        $attachments = $request->file('attachment');
        foreach ($attachments as $attachment) {
            $random = str_random(30);
            $filename = $random . $attachment->getClientOriginalName();
            $attachment->storeAs('users/' . $user->id . '/' . $directory, $filename);
            $file = new File;
            $file->path = $filename;
            $file->user_id = $user->id;
            $this->files()->save($file);
        }
    }
}

Upvotes: 0

user5633496
user5633496

Reputation:

public function upload(Request $request, User $user, $directory)
{
if($request->hasFile('attachment'))
{
    $random_name=rand(5, 15);
    $attachments = $request->file('attachment');
    foreach ($attachments as $attachment) {
        $fileName = $attachment->store('users/' . $user->id . '/' . $random_name);
        $file = new File;
        $file->path = $fileName;
        $file->user_id = $user->id;
        $this->files()->save($file);
    }
}

}

Upvotes: 1

Related Questions