0

Okay I have a small problem.

I want user to be able to upload image to public/logo folder and display that image in a div.

However I get these 2 errors when trying to upload:

enter image description here

JS:

function submitImage() {
    var fd = new FormData($("#upload_form")[0]);
    fd.append('img', $('#img'));
    $.ajax({
        url: 'business',
        data: fd,
        dataType: 'json',
        async: false,
        type: 'post',
        processData: false,
        contentType: false,
        success: function(data) {
            $("#image").attr("src", data.url);
            $('.naviga').append('<div class="alert alert-success">Image Uploaded!<div>');
            $(".alert-success").fadeOut(5000);
        },
        error: function(data) {
            var errors = data.responseJSON; //this will get the errors response data.
            //show them somewhere in the markup
            //e.g
            var errorsHtml = '<div class="alert alert-danger">';
            errorsHtml += errors.img[0]; //showing only the first error.
            errorsHtml += '</div>';
            $('.naviga').append('<div class="alert alert-danger">File type not supported! Use files with image extension only!<div>'); //appending to a <div id="form-errors">
            $(".alert-danger").fadeOut(5000);
        }
    });
}

Controller:

public function image(Requests\ImageRequest $request) {
    if($request->hasFile('img'))
    {
        $image = Input::file('img');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $path = public_path('logo/' . $filename);
        Image::make($image->getRealPath())->resize(200, 200)->save($path);
        $file = $request->file('img');
        return ['url' => url('logo/' . $filename)];
    }
}

Blade:

    <div id="left" class="logo2">
    <img class="images" id="image" src="#" alt="Your Logo"/>
        <form id="upload_form" action="{{ action('BusinessController@image') }}" enctype="multipart/form-data" role="form" method="POST">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input name="img" id="img" class="" data-input="false" type="file" data-buttonText="Upload Logo" data-size="sm" data-badge="false" onchange="submitImage();" />
</form>
    </div>

Route::

Route::get('/', function () {
    return view('auth/login');
});
Route::group(['middleware' => ['auth']], function () {
    Route::get('tfgm', 'GuzzleController@tfgm')->name('tfgm');;
    Route::get('odeon', 'GuzzleController@odeon')->name('odeon');;
    Route::get('chronicle', 'GuzzleController@oldham_chronicle')->name('chronicle');;
    Route::get('smokeyard', 'GuzzleController@smokeyard')->name('smokeyard');;
    Route::get('profile/', 'ProfileController@checkid')->name('profile');;
    Route::post('update', 'ProfileController@updateProfile');
    Route::get('create/business', 'BusinessController@addBusiness')->name('createBusiness');
    Route::post('create', 'BusinessController@createBusiness');
    Route::get('business/list', 'BusinessController@viewBusiness')->name('viewBusiness');
    Route::get('business/{name}', 'BusinessController@displayBusiness')->name('displayBusiness');
    Route::post('business/test', 'BusinessController@image');
});
Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/redirect/{provider}', 'SocialAuthController@redirect');
Route::get('/callback/{provider}', 'SocialAuthController@callback');

As asked I have provided all the routes that my website has

Przemek
  • 834
  • 6
  • 21
  • 49

1 Answers1

0

I think you are messing up while adding the image to the data.

Take a look at this answer, basically you can simplify your jquery

clod986
  • 2,527
  • 6
  • 28
  • 52