vahidahmad
5 سال پیش توسط vahidahmad مطرح شد
22 پاسخ

خرید آنلاین فایل های حجیم

سلام دوستان، وقت بخیر

🌟🌟 شرح خلاصه:
چطور میشه لینک اختصاصی برای دانلود یک فایل با حجم بالا حدود یک گیگ تولید کنم ، این کارو با لاراول انجام میدم ولی تمام رم اشغال میشه و سایت بالا نمیاد

🌟🌟 شرح کامل:
یه پروژه دارم انجام میدم که قراره در اون فایل های با حجم زیاد به فروش برسه، حدود یک گیگ، به کمک Laravel Signed Url میام محدودیت زمانی میذارم برای لینک دانلود و یه لینک اختصاصی برای کسی که فایل رو خریده تولید میکنم

موقعی که لینک دانلود کلیک میشه ، این تابع اجرا میشه :

        if (!request()->hasValidSignature()) {
            abort(۴۰۴);
        }
        $file = File::findOrFail($id);
        return response()->download($file->path);

فایل شروع میشه به دانلود شدن ولی مشکل اینه که این روش ظاهرا برای فایلهای بزرگ خوب نیست چون لاراول همه فایل رو میریزه توی رم برای ساخت response

تست زدم، وقتی فایل میخواد شروع بشه به دانلود، حدود یک دقیقه سایت اصلا بالا نمیاد!!

روش های دیگه ای هم هست مثل response->stream ولی با این روش دانلود فایل قابل resume نیست


ثبت پرسش جدید
mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش آپدیت شد
4

سلام پکیج زیر رو نصب کنید:

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 انجام بدید. نیازمند هاست یا سرور جداگانه هم نیستین.


vahidahmad
تخصص : برنامه نویس فول استک
@vahidahmad 5 سال پیش مطرح شد
0

@hesammousavi

ممنونم از پاسختون، این تابع رو هم امتحان کردم، متاسفانه مشکلش اینه که قابل resume نیست ، پکیجی که دوستان معرفی کردن خیلی بهتر عمل میکنه توی این مورد، ولی متاسفانه ایرادات ریزی داره...


سعید محمدی
@saeiidm 5 سال پیش آپدیت شد
0

@khanzadimahdi

سلام

جناب خانزادی امکانش هست این پکیج رو فقط قسمت دانلودش رو بصورت یه کلاس 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)

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام