Image Upload From Url Example

  • 04-05-2022
  • 2761
  • Laravel 9
  • Haresh Chauhan

Laravel giving easy and quick facility to upload image or files in S3 server or laravel project, laravel providing helper function to upload files or images into S3 bucket and it is easyies way to upload files to server for developer.

But some time developer need to upload image or files from live url, else files need to get from url that time initial developer going little bit difficult for uploading files.

So developer need to get files from url and get file from contents and upload to out project.

Here below working example code, it will get your image or files from url and upload to server.

So please follow the below example that will help you to get files or image from your url and upload to server.

Here below is my route file :

I have define the route for run the Homecontroller insside imageUpload method, This route will send request with an url, which will receive from request in homecontroller url.

routes/web.php

Route::get('image','HomeController@imageUpload');

If you want to upload files in your S3 bucket then you need to setup s3 configuration in your laravel project.

config/filesystem.php

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
],

you can also set this configuration in your .env

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_URL=
AWS_ENDPOINT=

After config the .env file run the below example, it might be possible that because of you change the environment file create cache in your project. please check else you can run the php artisan config:clear command this will clear your config cache.

app/Https/Controllers/HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Storage;
use File;
use Str;

class HomeController extends Controller
{
    public function imageUpload(Request $request)
    {
        $imageUrl = $request->url;
        $bucket = true; // if your want to upload in s3 bucket then true else false
        
        $storepath = Storage::disk('public')->path('users/image');

        if (!is_dir($storepath)) {
            
            File::makeDirectory($storepath, 0777, true);
        }
        
        $imageName = time() . '-' . Str::random(5) .'.'.pathinfo($imageUrl, PATHINFO_EXTENSION);
        
        if($bucket){
            
            Storage::disk('s3')->put($storepath.'/'.$imageName,file_get_contents($imageUrl));
        }else{
            
            $arrContextOptions=array(
                "ssl"=>array(
                    "verify_peer"=>false,
                    "verify_peer_name"=>false,
                ),
            );
    
            $contents = file_get_contents($imageUrl, false, stream_context_create($arrContextOptions));
    
            file_put_contents($storepath.'/'.$imageName, $contents);
        }

        return $storepath.'/'.$imageName; //image path that will save in your database
    }
}

After put above code in your method next we will run the project.

php artisan serve

Once run your project please put url param in your image route like below example.

http://127.0.0.1:8000/image?url=https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

I hope that your image get form url and successfully uploded.

I hope this post helped.


We always thanks to you for reading our blogs.


dharmesh-image

Dharmesh Chauhan

(Swapinfoway Founder)

Hello Sir, We are brothers origin from Gujarat India, Fullstack developers working together since 2016. We have lots of skills in web development in different technologies here I mention PHP, Laravel, Javascript, Vuejs, Ajax, API, Payment Gateway Integration, Database, HTML5, CSS3, and Server Administration. So you need our service Please Contact Us

haresh-image

Haresh Chauhan

(Co-Founder)


We Are Also Recommending You :