آفلاین
user-avatar

مشکل در نوشتن route

2 سال پیش
توسط Abdollah آپدیت شد
آفلاین
user-avatar
Abdollah ( 4574 تجربه )
2 سال پیش

سلام دوستان.

روتی که برای downloads/2018/4/file.zip/1 نوشته میشه چطوریه با توجه به اینکه سال و ماه تغییر خواهد کرد؟

بهترین پاسخ انتخاب شده توسط Abdollah
آفلاین
user-avatar
سجاد
2 سال پیش

(حضوری ذهن ندارم فکر کنم پروژه ای که این کد رو در اون استفاده کردیم ورژن 5.5 بود حتما کد رو تست کنید.
مثالی از تشخیص خودکار هدر:

        $file = File::get($path);
        $type = File::mimeType($path);
        $response = Response::make($file, 200);
        $response->header("Content-Type", $type);

+
بله گاهی ممکن هست مسئله ای پیش نیاد ولی گاهی هم مسئله پیش میاد!

آفلاین
user-avatar
حسام موسوی ( 382199 تجربه )
2 سال پیش
تخصص : طراح و برنامه نویس

با سلام متوجه سوالتون نشدم !
این روت داستانش چیه اصلا اگر در مورد فایل های استاتیک هست ! ممکنه مربوط به آدرس قرار گیریش در هاستتون باشه

آفلاین
user-avatar
سجاد ( 14593 تجربه )
2 سال پیش
تخصص : برنامه نویس

سلام
نمی دونم درست متوجه منظورتون شدم یا خیر.
route رو به صورت زیر بنویسید:

Route::get('downloads/{year}/{month}/{day}/{fileName}.{extension}', 'FileController@download');

برای تابع مربوطه در کنترلر هم ورودی ها رو تنظیم کنید، مثلا:

public function downlod($year,$month,$day,$fileName,$extension){}

فقط حواستون باشه که در این تابع حتما در کنار لود فایل از محل ذخیره اصلی هدر رو هم باید متناسب با extension ست کنید.

تنها مورد باقی مانده ساخت لینک هست که در سایت استفاده کنید.
برای این منظور با توجه به اینکه آدرس متغیر هست پیشنهاد بنده این هست که آدرس ها رو در دیتابیس ذخیره کنید.

پ ن:
مجددا امیدوارم درست متوجه سوالتون شده باشم!

آفلاین
user-avatar
Abdollah ( 4574 تجربه )
2 سال پیش

خیلی ممنون آره سوالم دقیقاً همین بود.

لطفاً یه مثال برای تنظیم هدر بگید چون توی آموزشی که من دیدم بدون تنظیم هدر دانلود انجام میشه و ظاهرا مشکلی پیش نمیاد.

آفلاین
user-avatar
سجاد ( 14593 تجربه )
2 سال پیش
تخصص : برنامه نویس

(حضوری ذهن ندارم فکر کنم پروژه ای که این کد رو در اون استفاده کردیم ورژن 5.5 بود حتما کد رو تست کنید.
مثالی از تشخیص خودکار هدر:

        $file = File::get($path);
        $type = File::mimeType($path);
        $response = Response::make($file, 200);
        $response->header("Content-Type", $type);

+
بله گاهی ممکن هست مسئله ای پیش نیاد ولی گاهی هم مسئله پیش میاد!

آفلاین
user-avatar
سجاد ( 14593 تجربه )
2 سال پیش
تخصص : برنامه نویس

سلام
امروز موردی برخوردم شاید به کار شما هم بیاد.

اگر از نسخه 5.6 استفاده می کنید بخش Downloading Files از https://laravel.com/docs/5.6/filesystem رو مطالعه بفرمایید شاید راه ساده تری هم پیشنهاد داده.

آفلاین
user-avatar
Abdollah ( 4574 تجربه )
2 سال پیش

من از این روش استفاده کردم:

        $realPathFile = realpath(storage_path($filePath));

        $fileName = $file->file_name;

        $type = ['Content-Type' => \File::mimeType($realPathFile)];

        return response()->download($realPathFile, $fileName, $type);
برای ارسال پاسخ باید وارد سایت شوید