खोज…
विन्यास
फाइलसिस्टम विन्यास फाइल config/filesystems.php
पर स्थित है। इस फ़ाइल के भीतर आप अपने "डिस्क" को कॉन्फ़िगर कर सकते हैं। प्रत्येक डिस्क एक विशेष भंडारण ड्राइवर और भंडारण स्थान का प्रतिनिधित्व करती है। प्रत्येक समर्थित ड्राइवर के लिए उदाहरण कॉन्फ़िगरेशन कॉन्फ़िगरेशन फ़ाइल में शामिल है। तो, अपनी भंडारण वरीयताओं और साख को प्रतिबिंबित करने के लिए विन्यास को संशोधित करें!
S3 या रैकस्पेस ड्राइवरों का उपयोग करने से पहले, आपको संगीतकार के माध्यम से उपयुक्त पैकेज स्थापित करना होगा:
- अमेजन S3:
league/flysystem-aws-s3-v2 ~1.0
- रैकस्पेस:
league/flysystem-rackspace ~1.0
बेशक, आप जितने चाहें उतने डिस्क कॉन्फ़िगर कर सकते हैं, और एक ही ड्राइवर का उपयोग करने वाले कई डिस्क भी हो सकते हैं।
स्थानीय ड्राइवर का उपयोग करते समय, ध्यान दें कि सभी फ़ाइल संचालन आपकी कॉन्फ़िगरेशन फ़ाइल में परिभाषित रूट निर्देशिका के सापेक्ष हैं। डिफ़ॉल्ट रूप से, यह मान storage/app directory
में सेट होता है। इसलिए, निम्न विधि किसी फ़ाइल को storage/app/file.txt
में संग्रहीत करेगी:
Storage::disk('local')->put('file.txt', 'Contents');
मूल उपयोग
आपके किसी भी कॉन्फ़िगर किए गए डिस्क के साथ इंटरैक्ट करने के लिए Storage
मुखौटा का उपयोग किया जा सकता है। वैकल्पिक रूप से, आप लारवेल सर्विस कंटेनर के माध्यम से हल किए गए किसी भी वर्ग पर Illuminate\Contracts\Filesystem\Factory
कॉन्ट्रैक्ट को टाइप-हिंट कर सकते हैं।
एक विशेष डिस्क को पुनः प्राप्त करना
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
यदि एक फ़ाइल मौजूद है, तो यह निर्धारित करना
$exists = Storage::disk('s3')->exists('file.jpg');
डिफ़ॉल्ट डिस्क पर कॉलिंग के तरीके
if (Storage::exists('file.jpg'))
{
//
}
एक फ़ाइल की सामग्री को पुनः प्राप्त करना
$contents = Storage::get('file.jpg');
फ़ाइल की सामग्री सेट करना
Storage::put('file.jpg', $contents);
एक फ़ाइल के लिए प्रस्तुत करें
Storage::prepend('file.log', 'Prepended Text');
एक फ़ाइल में जोड़ें
Storage::append('file.log', 'Appended Text');
एक फ़ाइल हटाएँ
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
एक नए स्थान पर एक फ़ाइल की प्रतिलिपि बनाएँ
Storage::copy('old/file1.jpg', 'new/file1.jpg');
एक नए स्थान पर एक फ़ाइल ले जाएँ
Storage::move('old/file1.jpg', 'new/file1.jpg');
फ़ाइल का आकार प्राप्त करें
$size = Storage::size('file1.jpg');
अंतिम संशोधन समय (UNIX) प्राप्त करें
$time = Storage::lastModified('file1.jpg');
एक निर्देशिका के भीतर सभी फ़ाइलें प्राप्त करें
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
एक निर्देशिका के भीतर सभी निर्देशिकाएँ प्राप्त करें
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
एक निर्देशिका बनाएँ
Storage::makeDirectory($directory);
एक निर्देशिका हटाएँ
Storage::deleteDirectory($directory);
कस्टम फाइलसिस्टम
लारवेल का फ्लाईसिस्टम एकीकरण कई "ड्राइवरों" को आउट ऑफ द बॉक्स प्रदान करता है; हालाँकि, फ्लाईसिस्टम इन तक सीमित नहीं है और कई अन्य भंडारण प्रणालियों के लिए एडेप्टर हैं। यदि आप अपने Laravel एप्लिकेशन में इनमें से एक अतिरिक्त एडेप्टर का उपयोग करना चाहते हैं, तो आप एक कस्टम ड्राइवर बना सकते हैं। चिंता मत करो, यह बहुत मुश्किल नहीं है!
कस्टम फ़ाइल सिस्टम को सेट करने के लिए आपको एक सेवा प्रदाता बनाने की आवश्यकता होगी जैसे DropboxFilesystemServiceProvider
सर्विस DropboxFilesystemServiceProvider
। प्रदाता की boot
विधि में, आप Illuminate\Contracts\Filesystem\Factory
अनुबंध का एक उदाहरण इंजेक्ट कर सकते हैं और इंजेक्ट किए गए इंस्टेंस का extend
विधि को कॉल कर सकते extend
। वैकल्पिक रूप से, आप Disk
मुखौटा की extend
विधि का उपयोग कर सकते हैं।
extend
विधि का पहला तर्क ड्राइवर का नाम है और दूसरा क्लोजर है जो $app
और $config
चर प्राप्त करता है। रिज़ॉल्वर क्लोज़र को League\Flysystem\Filesystem
का एक उदाहरण वापस करना होगा।
नोट: $ config चर में पहले से ही निर्दिष्ट डिस्क के लिए
config/filesystems.php
में परिभाषित मूल्य शामिल होंगे। ड्रॉपबॉक्स उदाहरण
<?php namespace App\Providers;
use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Support\ServiceProvider;
class DropboxFilesystemServiceProvider extends ServiceProvider {
public function boot()
{
Storage::extend('dropbox', function($app, $config)
{
$client = new DropboxClient($config['accessToken'], $config['clientIdentifier']);
return new Filesystem(new DropboxAdapter($client));
});
}
public function register()
{
//
}
}
SSH का उपयोग करके वेब सर्वर में प्रतीकात्मक लिंक बनाना
लारवेल प्रलेखन में, वेब से फ़ाइलों को सुलभ बनाने के लिए सार्वजनिक / स्टोरेज से स्टोरेज / ऐप / पब्लिक तक एक प्रतीकात्मक लिंक (सीमलिंक या सॉफ्ट लिंक) बनाया जाना चाहिए।
(यह प्रक्रिया लारवल परियोजना के क्षेत्र के साथ सांख्यिक लिंक बनाएगी)
SSH क्लाइंट का उपयोग करके आप अपने लिनक्स वेब सर्वर में प्रतीकात्मक लिंक कैसे बना सकते हैं, इसके चरण इस प्रकार हैं:
SSH क्लाइंट (जैसे PUTTY) का उपयोग करके अपने वेब सर्वर से कनेक्ट और लॉगिन करें।
सिंटैक्स का उपयोग करके स्टोरेज / ऐप / पब्लिक को पब्लिक / स्टोरेज से लिंक करें
ln -s target_path link_path
उदाहरण (CPanel फ़ाइल निर्देशिका में)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(फ़ोल्डर आइकन पर स्टोरेज को एक इंडिकेटर >>> के साथ लिंक करने के लिए स्टोरेज नाम से बनाया जाएगा।)