File Uploads β
Introduction β
Doppar's filesystem configuration file is located at config/filesystem.php
. Within this file, you may configure all of your filesystem "disks". Each disk represents a particular storage driver and storage location. Example configurations for each supported driver are included in the configuration file so you can modify the configuration to reflect your storage preferences and credentials.
You may configure as many disks as you like and may even have multiple disks that use the same driver. But if you change any of your configuration, and that is not wokring, please clean the application configuration by running the command config:clear
.
The Local Driver β
When using the local driver, all file operations are relative to the root directory defined in your filesystems configuration file. By default, this value is set to the storage/app/profile directory. Therefore, the following method would write to storage/app/profile/example.txt
.
use Phaseolies\Support\Facades\Storage;
Storage::disk('local')->store('profile', $request->file('file'));
The Public Disk β
The public disk included in your application's filesystems configuration file is intended for files that are going to be publicly accessible. By default, the public disk uses the local driver and stores its files in storage/app/public
.
If your public disk uses the local driver and you want to make these files accessible from the web, you should create a symbolic link from source directory storage/app/public
to target directory public/storage:
To create the symbolic link, you may use the storage:link
Pool command
php pool storage:link
Display The Image β
Once a file has been stored and the symbolic link has been created, you can create a URL to the files using the enqueue helper:
echo enqueue('storage/image.png');
File Upload β
To upload file, you can use Phaseolies\Support\Facades\Storage
facades or you can use direct file object. To upload a image using Storage facades
use Phaseolies\Support\Facades\Storage;
Storage::disk('public')->store('profile', $request->file('file'));
This will store file into storage/app/public/profile
directory. here profile is the directory name that is optional. If you do not pass profile, it will storage file to its default path like storage/app/public
. You can also uploads file into local disk that is a private directory.
use Phaseolies\Support\Facades\Storage;
Storage::disk('local')->store('profile', $request->file('file'));
This will store file into storage/app/profile
directory. here profile is the directory name that is optional. If you do not pass profile, it will storage file to its default path like storage/app
. You can also uploads file into local disk that is a private directory.
Upload with custom file name β
If you want to upload file using your customize file name, then remember, store()
third parameter as $fileName. see the example
$file = uniqid() . '_' . $request->file('file')->getClientOriginalName();
Storage::disk('local')->store('profile', $request->file('file'), $file);
Get the uploaded File β
Now if you want to get the uploaded file path, simply you can use get() method
return Storage::disk('local')->get('profile.png');
Get the uploaded file contents β
To get the uploaded file contents, you can call contents() method, like
Storage::disk('local')->content('product/product.json');
response()->file($pathToFile); // You can use this also
Delete file β
To delete file from storage disk, you can call delete() method
return Storage::disk('local')->delete('product/product.json');
Upload File Without Storage β
You can upload file any of your application folder. Doppar allows it also. To upload file without Storage facades,
$request->file('file')->store('product');
Now your file will be stored in profuct directory inside storage folder. You can also use the storeAs method by passing your custom file name. You can pass a callback with storeAs method like
$admin = true;
$request->file('file')
->storeAs('product-cart', 'file_name',
function ($file) use ($admin) {
if ($admin) {
//
}
}
);
You can also use move method to upload your file.
$file = $request->file('invoice');
$file->move($destinationPath, $fileName)
File Downloads β
The download method generates a response that triggers a file download in the userβs browser. It takes the file path as its primary argument. Optionally, you can specify a custom download filename as the second argumentβthis overrides the default name seen by the user. Additionally, an array of custom HTTP headers can be passed as a third argument for further control over the download behavior.
return response()->download($pathToFile);
return response()->download($pathToFile, $name, $headers);
File Responses β
The file method may be used to display a file, such as an image or PDF, directly in the user's browser instead of initiating a download. This method accepts the absolute path to the file as its first argument and an array of headers as its second argument:
return response()->file($pathToFile);
return response()->file($pathToFile, $headers);
Streamed Downloads β
At times, you may want to convert the string output of an operation into a downloadable response without storing it on disk. The streamDownload method allows you to achieve this by accepting a callback, filename, and an optional array of headers as parameters:
use App\Services\Doppar;
return response()->streamDownload(function () {
echo Doppar::api('repo')
->contents()
->readme('doppar', 'doppar')['contents'];
}, 'doppar-readme.md');