Reputation: 10886
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:
How do I store a random name (path) instead of a entire path?
(Random unique name something like: 7b11ae012907b5811cb6985d39e16052
)
Upvotes: 1
Views: 521
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
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