Thursday, March 2, 2017

The requested URL was not found on this server but works local

I have a Laravel setup where I can add files and remove them. Now when I try to remove icons on my site on the server I get

Not Found
The requested URL /icons/24 was not found on this server.

Uploading the files and retrieving the files works. When I test it locally it works. And I do it the exact same way as with images, video files and audio files, and those all work on the server.

To debug it I also added the show() function in the controller, and that one also gives the same problem. What is going on?

routes/web.php: (partially)

Route::get('iconFile/{id}','IconController@iconFile');
Route::get('imageFile/{id}','ImageController@imageFile');
Route::get('audioFile/{id}','AudioController@audioFile');
Route::get('videoFile/{id}','VideoController@videoFile');
Route::get('signlanguageFile/{id}','SignlanguageController@signlanguageFile');

Route::group(['middleware' => ['auth']], function() {
    Route::post('image-upload-with-validation',['as'=>'postimage','uses'=>'ImageController@postImage']);
    Route::post('icon-upload-with-validation',['as'=>'posticon','uses'=>'IconController@postIcon']);

    Route::resource('texts', 'TextController');
    Route::resource('icons', 'IconController');
    Route::resource('images', 'ImageController');
    Route::resource('videos', 'VideoController');
    Route::resource('signlanguages', 'SignlanguageController');
    Route::resource('audios', 'AudioController');
});

IconController:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Icon;
use Storage;

class IconController extends Controller
{

    public function iconFile($id)
    {
        $icon = Icon::find($id);
        $contents = Storage::disk('local')->get('uploads/icons/'.$icon->file);
        $response = Response($contents);
        $response->header('Content-Type', 'icon');
        return $response;
    }

    public function show($id)
    {
        $icon = Icon::find($id);
        $data = [
            'icon' => $icon
         ];
         echo $icon;
        //return view('icon', $data);
    }

    public function postIcon(Request $request)
    {
        $this->validate($request, [
            'icon_file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:10000',
        ]);
        $iconName = time().'.'.$request->icon_file->getClientOriginalExtension();

        $request->icon_file->move(storage_path('app/uploads/icons'), $iconName);

        $icon = new Icon;
        $icon->parent_id = $request->parent_id;
        $icon->file = $iconName;
        $icon->save();

        return back()
            ->with('success','You have successfully uploaded an icon.')
            ->with('icon',$iconName);
    }

    public function destroy($id)
    {
        $icon = Icon::find($id);
        $section_id = $icon->parent_id;
        Storage::delete('uploads/icons/'.$icon->file);
        $icon->delete();
        return redirect('/section/'.$section_id)->with('success','Icon deleted.');
    }
}




via Niels

Advertisement