مرتضی رحمانی
3 سال پیش توسط مرتضی رحمانی مطرح شد
7 پاسخ

مشکل در دانلود فایل از url در لاراول

وقت دوستان بخیر...
با لاراول یک فایل رو از یک URL به این شکل میخوام دانلود کنم:

return response()->download("http://dl.example.com/files/logo.png?md5=sl2p0yxcYs3iLZpRCcAzPw&expires=1625496000");

چنین اروری میاد: The file "..." does not exist
این یک لینک هش شده هست که اگه داخل مرورگر جستجو کنم فایل که یک عکس هست رو داخل مرورگر به من نمایش میده. اما میخوام لینک دانلودش رو در اختیار کاربر قرار بدم باید چیکار کنم؟؟


ثبت پرسش جدید
مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 3 سال پیش مطرح شد
0

جواب رو پیدا کردم، باید از متد streamDownload به جای download استفاده بشه:

return response()->streamDownload(function () use ($url)  {
    echo file_get_contents($url);
}, $product->file);

امیر علی
تخصص : طراح و توسعه دهنده fullstack
@ajdar9667 3 سال پیش مطرح شد
0

یعنی الان دقیقا اون چیزی رو که ن‌وشتی تو مرورگر بزنی اون رو بالا میاره؟ از ارورت عکس بده


مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 3 سال پیش آپدیت شد
0

@ajdar9667 بله تو مرورگر وارد میکنم میاره فقط تو دانلودش با لاراول مشکل دارم.

تصویر ارور

اینم بگم url مشکلی نداره اگه همین متد download رو تبدیل کنم به redirect کار میکنه.


امیر علی
تخصص : طراح و توسعه دهنده fullstack
@ajdar9667 3 سال پیش مطرح شد
0

نگاه کن فک کنم متد donload دقیقا ادرس فایل رو میگیره مه با پسوند های مثلا jpg هستش رو باید بهش بدی البته فک کنم اطلاع زیادی در این زمینه ندارم حالا شما برای ازمایش یبار فایلی با پسوندش ** در هاست قرار بده و ادرسش رو بزار داخلdownload ببین میشه یا نه


مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 3 سال پیش مطرح شد
0

@ajdar9667 به نظر کلا هر یو ار الی میزارم کار نمیکنه! مثلا اینو تست کردم بازم مشکل داره:

return response()->download('https://wallpaperaccess.com/full/24722.png');

درحالی که هم پسوند داره هم هش نشده و سالمه.


مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 3 سال پیش مطرح شد
0

جواب رو پیدا کردم، باید از متد streamDownload به جای download استفاده بشه:

return response()->streamDownload(function () use ($url)  {
    echo file_get_contents($url);
}, $product->file);

محمدسجاد دباغ
تخصص : برنامه نویس لاراول
@mdabbagh 3 سال پیش مطرح شد
0

@mortezarahmani
سلام منم همین مشکل خوردم ، به جای $url و $product->file چی باید قرار بدیم؟
برای من ارور زیر میاد

$file_item = File::find($topic->file_id);
            $url = 'http://localhost/storage/html.mp4';
            return response()->streamDownload(function () use ($url)  {
                echo file_get_contents($url);
}, $file_item);

The filename and the fallback cannot contain the "/" and "\" characters.

به روش های زیر هم امتحان کردم نشد

// return response()->download('http://localhost/html.mp4');
return response()->download('http://localhost/storage/html.mp4');
// return response()->download('http://localhost:8000/html.mp4');
// return response()->download('http://localhost:8000/storage/html.mp4');
// return response()->download('http://127.0.0.1:8000/storage/html.mp4');
// return response()->download('http://127.0.0.1:8000/html.mp4');

محمدسجاد دباغ
تخصص : برنامه نویس لاراول
@mdabbagh 3 سال پیش مطرح شد
0

با استفاده از دستور زیر حل شد.

$file_item = File::find($topic->file_id);
// $file_item->file_url == /html.mp4
return Storage::download($file_item->file_url);

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

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