Did you take a look at this? https://mattstauffer.co/blog/laravel-5.0-cloud-file-drivers
Aug 8, 2015
10
Level 2
upload directly to s3
Hello,
I am working with an already established code. The image handler uploads the files to a folder in the public uploads directory. see the code below.
// Lets get all these Arguments and assign them!
$image = $args['image'];
$folder = $args['folder'];
$filename = $args['filename'];
$type = $args['type'];
// Hey if the folder we want to put them in is images. Let's give them a month and year folder
if($folder == 'images'){
$month_year = date('FY').'/';
} else {
$month_year = '';
}
// Check it out! This is the upload folder
$upload_folder = 'content/uploads/' . $folder . '/'.$month_year;
if ( @getimagesize($image) ){
// if the folder doesn't exist then create it.
if (!file_exists($upload_folder)) {
mkdir($upload_folder, 0777, true);
}
if($type =='upload'){
$filename = $image->getClientOriginalName();
// if the file exists give it a unique name
while (file_exists($upload_folder.$filename)) {
$filename = uniqid() . '-' . $filename;
}
$uploadSuccess = $image->move($upload_folder, $filename);
if(strpos($filename, '.gif') > 0){
$new_filename = str_replace('.gif', '-animation.gif', $filename);
copy($upload_folder . $filename, $upload_folder . $new_filename);
}
} else if($type = 'url'){
$file = file_get_contents($image);
if(strpos($image, '.gif') > 0){
$extension = '-animation.gif';
} else {
$extension = '.jpg';
}
$filename = $filename . $extension;
if (file_exists($upload_folder.$filename)) {
$filename = uniqid() . '-' . $filename . $extension;
}
if(strpos($image, '.gif') > 0){
file_put_contents($upload_folder.$filename, $file);
$filename = str_replace('-animation.gif', '.gif', $filename);
}
file_put_contents($upload_folder.$filename, $file);
}
$settings = Setting::first();
$img = Image::make($upload_folder . $filename);
if($folder == 'images'){
$img->resize(1280, null, function ($constraint) {
$constraint->aspectRatio();
});
Image::make($upload_folder . $filename)->resize(960, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . pathinfo($filename, PATHINFO_FILENAME) . '-large.' . pathinfo($filename, PATHINFO_EXTENSION));
Image::make($upload_folder . $filename)->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . pathinfo($filename, PATHINFO_FILENAME) . '-medium.' . pathinfo($filename, PATHINFO_EXTENSION));
Image::make($upload_folder . $filename)->resize(320, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . pathinfo($filename, PATHINFO_FILENAME) . '-small.' . pathinfo($filename, PATHINFO_EXTENSION));
} else if($folder == 'avatars'){
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->save($upload_folder . $filename);
return $month_year . $filename;
} else {
return false;}}</code>
I watched this video https://laracasts.com/series/whats-new-in-laravel-5/episodes/6, and I do not know how to implement this to have the code uploaded directly to s3. How can I make the file upload directly to my s3? I have already set up the filesystem variables.
Level 2
// Lets get all these Arguments and assign them!
$image = $args['image'];
$folder = $args['folder'];
$filename = $args['filename'];
$type = $args['type'];
// Hey if the folder we want to put them in is images. Let's give them a month and year folder
if($folder == 'images'){
$month_year = date('FY').'/';
} else {
$month_year = '';
}
// Check it out! This is the upload folder
$upload_folder = 'content/uploads/' . $folder . '/'.$month_year;
if ( @getimagesize($image) ){
// if the folder doesn't exist then create it.
if (!file_exists($upload_folder)) {
mkdir($upload_folder, 0777, true);
}
if($type =='upload'){
$filename = $image->getClientOriginalName();
// if the file exists give it a unique name
while (file_exists($upload_folder.$filename)) {
$filename = uniqid() . '-' . $filename;
}
$uploadSuccess = $image->move($upload_folder, $filename);
if(strpos($filename, '.gif') > 0){
$new_filename = str_replace('.gif', '-animation.gif', $filename);
copy($upload_folder . $filename, $upload_folder . $new_filename);
}
} else if($type = 'url'){
$file = file_get_contents($image);
if(strpos($image, '.gif') > 0){
$extension = '-animation.gif';
} else {
$extension = '.jpg';
}
$filename = $filename . $extension;
if (file_exists($upload_folder.$filename)) {
$filename = uniqid() . '-' . $filename . $extension;
}
if(strpos($image, '.gif') > 0){
file_put_contents($upload_folder.$filename, $file);
$filename = str_replace('-animation.gif', '.gif', $filename);
}
file_put_contents($upload_folder.$filename, $file);
}
$settings = Setting::first();
$img = Image::make($upload_folder . $filename);
if($folder == 'images'){
$img->resize(1280, null, function ($constraint) {
$constraint->aspectRatio();
});
$filename_large = pathinfo($filename, PATHINFO_FILENAME) . '-large.' . pathinfo($filename, PATHINFO_EXTENSION);
Image::make($upload_folder . $filename)->resize(960, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . $filename_large);
\Storage::disk('s3')->put($filename_large, file_get_contents($upload_folder . $filename_large));
$filename_medium = pathinfo($filename, PATHINFO_FILENAME) . '-medium.' . pathinfo($filename, PATHINFO_EXTENSION);
Image::make($upload_folder . $filename)->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . $filename_medium);
\Storage::disk('s3')->put($filename_medium, file_get_contents($upload_folder . $filename_medium));
$filename_small = pathinfo($filename, PATHINFO_FILENAME) . '-small.' . pathinfo($filename, PATHINFO_EXTENSION);
Image::make($upload_folder . $filename)->resize(320, null, function ($constraint) {
$constraint->aspectRatio();
})->save($upload_folder . $filename_small);
\Storage::disk('s3')->put($filename_small, file_get_contents($upload_folder . $filename_small));
} else if($folder == 'avatars'){
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->save($upload_folder . $filename);
\Storage::disk('s3')->put($filename, file_get_contents($upload_folder . $filename));
return $month_year . $filename;
} else {
return false;}}</code>
1 like
Please or to participate in this conversation.