Drag Upload


/routes/web.php
Route::get('/drag-upload-test', function () { return view('drag-upload-test'); });
Route::post('/drag-upload-post', [StudentController::class, 'files_drag_upload_post']);

/resources/views/drag-upload.blade.php
<link href="https://activetechsystems.com/cdn/apps/drag-upload/drag-upload.css" type="text/css" rel="stylesheet" />
<script src="https://activetechsystems.com/cdn/apps/drag-upload/drag-upload.js" type="text/javascript" ></script>

<div class="container">
	<div class="file_upload">
		<form action="/drag-upload-post" class="dragdrop">
		<?= csrf_field() ?>
			<div class="dd-message needsclick" style="font-family: Arial;">
				DROP FILES HERE<br /><br /> OR CLICK TO UPLOAD<br />
                <br /> jpg, jpeg, png - Max. 1 MB
			</div>
		</form>
	</div>
</div>

app/http/Controllers/TheController.php
public function files_drag_upload_post() { 

    $allowed_max_size = 1024 * 1024;
    $allowed_extensions_arr = ['jpg', 'jpeg', 'png'];
        
    $upload_dir = public_path().'/uploads/';
    $fileName = $_FILES['file']['name'];
    $uploaded_file = $upload_dir . $fileName;

    $ext = pathinfo($uploaded_file, PATHINFO_EXTENSION);
    $file_size = $_FILES['file']['size'];

    if(in_array($ext, $allowed_extensions_arr) && $file_size <= $allowed_max_size ) {
        if(move_uploaded_file($_FILES['file']['tmp_name'], $uploaded_file)) {
            rename($uploaded_file, $upload_dir.$this->slug_it($fileName));
        }
    }
    else {
        echo $_FILES['file']['create_error']; // mimic create error to show x mark
    }
}

public function slug_it($slug) {
    $slug = str_replace(' ', '-', $slug);
    $slug = strtolower($slug);
    return $slug;
}    


Drag Upload Test