JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour
<?php namespace Livewire; use Illuminate\Support\Facades\URL; class GenerateSignedUploadUrl { public function forLocal() { return URL::temporarySignedRoute( 'livewire.upload-file', now()->addMinutes(FileUploadConfiguration::maxUploadTime()) ); } public function forS3($file, $visibility = 'private') { $adapter = FileUploadConfiguration::storage()->getDriver()->getAdapter(); $fileType = $file->getMimeType(); $fileHashName = TemporaryUploadedFile::generateHashNameWithOriginalNameEmbedded($file); $path = FileUploadConfiguration::path($fileHashName); $command = $adapter->getClient()->getCommand('putObject', array_filter([ 'Bucket' => $adapter->getBucket(), 'Key' => $path, 'ACL' => $visibility, 'ContentType' => $fileType ?: 'application/octet-stream', 'CacheControl' => null, 'Expires' => null, ])); $signedRequest = $adapter->getClient()->createPresignedRequest( $command, '+' . FileUploadConfiguration::maxUploadTime() . ' minutes' ); return [ 'path' => $fileHashName, 'url' => (string) $signedRequest->getUri(), 'headers' => $this->headers($signedRequest, $fileType), ]; } protected function headers($signedRequest, $fileType) { return array_merge( $signedRequest->getHeaders(), [ 'Content-Type' => $fileType ?: 'application/octet-stream' ] ); } }