$upload->setAdapter(new \GunnerProject\Storage\S3Adapter([ 'key' => 'YOUR_AWS_KEY', 'secret' => 'YOUR_AWS_SECRET', 'bucket' => 'my-uploads', 'region' => 'us-east-1' ])); Run custom logic after successful upload:
// Store metadata in database $db = GunnerProject\Database::getInstance(); $db->insert('file_metadata', [ 'original_name' => $result['original_name'], 'stored_name' => $result['filename'], 'mime' => $result['mime'], 'size' => $result['size'], 'user_id' => $request->getAttribute('user_id'), 'created_at' => date('Y-m-d H:i:s') ]);
$upload = new FileUpload([ 'chunk_size' => 2 * 1024 * 1024, // 2 MB per chunk 'resumable' => true, 'parallel_chunks' => 3 // Max concurrent chunks ]); On the client side, use the included JavaScript library:
return $response->json([ 'message' => 'Upload successful', 'file_id' => $db->lastInsertId() ]); )->add('auth'); // Require authentication GunnerProject’s fileupload module simplifies one of the most risky and complex areas of web development. By leveraging its built-in validation, chunking, and storage adapters, you can build robust upload features in hours instead of days. Always remember: never trust user input — and GunnerProject gives you the tools to enforce that rule automatically.
const uploader = new GunnerUploader( endpoint: '/api/upload/chunk', chunkSize: 2 * 1024 * 1024, file: selectedFile ); uploader.start(); Switch from local disk to S3 in one line:
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="userfile" required> <input type="submit" value="Upload"> </form> 1. Chunked Uploads for Large Files Enable chunking in the configuration:
Gunnerproject Fileupload Info
$upload->setAdapter(new \GunnerProject\Storage\S3Adapter([ 'key' => 'YOUR_AWS_KEY', 'secret' => 'YOUR_AWS_SECRET', 'bucket' => 'my-uploads', 'region' => 'us-east-1' ])); Run custom logic after successful upload:
// Store metadata in database $db = GunnerProject\Database::getInstance(); $db->insert('file_metadata', [ 'original_name' => $result['original_name'], 'stored_name' => $result['filename'], 'mime' => $result['mime'], 'size' => $result['size'], 'user_id' => $request->getAttribute('user_id'), 'created_at' => date('Y-m-d H:i:s') ]); gunnerproject fileupload
$upload = new FileUpload([ 'chunk_size' => 2 * 1024 * 1024, // 2 MB per chunk 'resumable' => true, 'parallel_chunks' => 3 // Max concurrent chunks ]); On the client side, use the included JavaScript library: chunkSize: 2 * 1024 * 1024
return $response->json([ 'message' => 'Upload successful', 'file_id' => $db->lastInsertId() ]); )->add('auth'); // Require authentication GunnerProject’s fileupload module simplifies one of the most risky and complex areas of web development. By leveraging its built-in validation, chunking, and storage adapters, you can build robust upload features in hours instead of days. Always remember: never trust user input — and GunnerProject gives you the tools to enforce that rule automatically. file: selectedFile )
const uploader = new GunnerUploader( endpoint: '/api/upload/chunk', chunkSize: 2 * 1024 * 1024, file: selectedFile ); uploader.start(); Switch from local disk to S3 in one line:
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="userfile" required> <input type="submit" value="Upload"> </form> 1. Chunked Uploads for Large Files Enable chunking in the configuration: