سلام
سایت های مختلف مثل همین راکت، این فایل های ویدئویی یا پی دی اف یا زیپ رو کجا ذخیره میکنند؟ چجوری میشه جایی ذخیره کرد که بدون اجازه نشه دسترسی پیدا کرد بهشون؟
مثلا بخوام چندتا فایل زیپ بفروشم، و بعد فروش لینک دانلود بذارم، کسی میدونه چجوری میشه؟
ببینید این به دردتون میخوره
https://roocket.ir/series/download-a-file-system-against-payment-with-laravel
کافیه اون ها رو در فولدر storage/app قرار بدید. اینجوری هیچ گونه لینک مستقیمی برای دسترسی به این فایل ها قرار نداره. حالا تو پروژه لاراولتون بعد از اعتبارسنجی ها و ... هر وقت خواستید فایل رو به دست کاربر برسونید که بتونه دانلود کنه میتونید یک response از نوع download با آدرس فایل مورد نظر بهش بدید. مثلا اینجوری:
return response()->download('path_to_file');
اطلاعات جزئی تر:
https://laravel.com/docs/5.8/responses#file-downloads
با سلام. در اینصورت که شما راهنمایی کردید چجور میشه فایل رو توسط کد تو اونجا upload کرد؟
@Alvandi
خیلی ساده با استفاده از Storage facade و دستور put:
use Illuminate\Support\Facades\Storage;
Storage::put('file.jpg', $image);
تنظیمات بیشترش رو هم باید در فایل config/filesystem.php کانفیگ کنید.
توضیحات بیشتر:
https://laravel.com/docs/8.x/filesystem#storing-files
سلام دوست عزیز!
در لاراول به صورت عادی فقط فایل های درون پوشه public با استفاده از لینک مستقیم قابل دانلود هستند.
مثل همان فایل های css و ... که در public قرار میدهیم.
پس در هر پوشه دیگری فایل هارو آپلود کنیم ، قابل دسترس نیستند.
لاراول برای آپلود و دانلود File Storage رو به وجود آورده که یک پوشه خارج از public هست.
و برای دانلود فایل های پوشه Storage تنها از متد زیر میتوانیم استفاده کنیم.
return Storage::download('file.zip');
در انتها میتونیم در کنترلر خودمون بعد از بررسی هویت و امکان دانلود توسط کاربر ، متد بالا را اجرا کنیم.
نکته: ما نیاز نداریم لینک دانلود را مستقیم در تگ a بنویسیم، باید در تگ a روتر دانلود را فراخوانی و id فایل مورد نظر را ارسال کنیم تا درخواست دانلود توسط کنترلر بررسی شود.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟