سلام دوستان، وقت بخیر
🌟🌟 شرح خلاصه:
چطور میشه لینک اختصاصی برای دانلود یک فایل با حجم بالا حدود یک گیگ تولید کنم ، این کارو با لاراول انجام میدم ولی تمام رم اشغال میشه و سایت بالا نمیاد
🌟🌟 شرح کامل:
یه پروژه دارم انجام میدم که قراره در اون فایل های با حجم زیاد به فروش برسه، حدود یک گیگ، به کمک Laravel Signed Url میام محدودیت زمانی میذارم برای لینک دانلود و یه لینک اختصاصی برای کسی که فایل رو خریده تولید میکنم
موقعی که لینک دانلود کلیک میشه ، این تابع اجرا میشه :
if (!request()->hasValidSignature()) {
abort(۴۰۴);
}
$file = File::findOrFail($id);
return response()->download($file->path);
فایل شروع میشه به دانلود شدن ولی مشکل اینه که این روش ظاهرا برای فایلهای بزرگ خوب نیست چون لاراول همه فایل رو میریزه توی رم برای ساخت response
تست زدم، وقتی فایل میخواد شروع بشه به دانلود، حدود یک دقیقه سایت اصلا بالا نمیاد!!
روش های دیگه ای هم هست مثل response->stream ولی با این روش دانلود فایل قابل resume نیست
سلام پکیج زیر رو نصب کنید:
composer require shetabit/chunky
حالا فایل رو استریم کنید (مولتی چانک و قابل رزیوم هست) :
<?php
namespace App\Http\Controllers;
use App\Models\File;
use Shetabit\Chunky\Classes\StreamOut;
class StreamOutController extends Controller
{
/**
* Stream file output
*
* @param File $file
*/
public function __invoke(File $file)
{
$path = '../'.$file->path;
$stream = new StreamOut($path);
$stream->process();
}
}
خود پکیج وظیفه کنترل چانک ها رو به عهده میگیره و میتونید مولتی چانک به صورت همزمان نیز دانلود رو با IDM انجام بدید. نیازمند هاست یا سرور جداگانه هم نیستین.
ممنونم از پاسختون، این تابع رو هم امتحان کردم، متاسفانه مشکلش اینه که قابل resume نیست ، پکیجی که دوستان معرفی کردن خیلی بهتر عمل میکنه توی این مورد، ولی متاسفانه ایرادات ریزی داره...
سلام
جناب خانزادی امکانش هست این پکیج رو فقط قسمت دانلودش رو بصورت یه کلاس php ارائه بدید نه بصورت یه پکیج لاراولی تا بتونم تو کلاس مربوط به پروژه خودم استفاده کنم چون موقع نصب اخطار داد بهم
با لاراول 5.6 و ورژن php 7.2 نتونستم نصبش کنم و در ضمن من فقط کد مربوط به دانلود رو میخام
سپاس
C:\wamp\www\myproject>composer require shetabit/chunky
The "https://packagist.org/packages.json" file could not be downloaded: SSL: Handshake timed out
Failed to enable crypto
failed to open stream: operation failed
https://packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date
Using version ^1.0 for shetabit/chunky
./composer.json has been updated
Loading composer repositories with package information
The "https://packagist.org/packages.json" file could not be downloaded: SSL: Handshake timed out
Failed to enable crypto
failed to open stream: operation failed
https://packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date
Updating dependencies (including require-dev)
[Composer\Downloader\TransportException]
The "https://packagist.org/p/illuminate/support%2456b8d55fe69906bef569b79a104843583ff0fc6da5261bfe19a31c8dd75ef891.json" file could not be downloaded (HTTP/1.1 404 Not Found)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟