وقت دوستان بخیر...
با لاراول یک فایل رو از یک URL به این شکل میخوام دانلود کنم:
return response()->download("http://dl.example.com/files/logo.png?md5=sl2p0yxcYs3iLZpRCcAzPw&expires=1625496000");
چنین اروری میاد: The file "..." does not exist
این یک لینک هش شده هست که اگه داخل مرورگر جستجو کنم فایل که یک عکس هست رو داخل مرورگر به من نمایش میده. اما میخوام لینک دانلودش رو در اختیار کاربر قرار بدم باید چیکار کنم؟؟
جواب رو پیدا کردم، باید از متد streamDownload به جای download استفاده بشه:
return response()->streamDownload(function () use ($url) {
echo file_get_contents($url);
}, $product->file);
@ajdar9667 بله تو مرورگر وارد میکنم میاره فقط تو دانلودش با لاراول مشکل دارم.
اینم بگم url مشکلی نداره اگه همین متد download رو تبدیل کنم به redirect کار میکنه.
نگاه کن فک کنم متد donload دقیقا ادرس فایل رو میگیره مه با پسوند های مثلا jpg هستش رو باید بهش بدی البته فک کنم اطلاع زیادی در این زمینه ندارم حالا شما برای ازمایش یبار فایلی با پسوندش ** در هاست قرار بده و ادرسش رو بزار داخلdownload ببین میشه یا نه
@ajdar9667 به نظر کلا هر یو ار الی میزارم کار نمیکنه! مثلا اینو تست کردم بازم مشکل داره:
return response()->download('https://wallpaperaccess.com/full/24722.png');
درحالی که هم پسوند داره هم هش نشده و سالمه.
جواب رو پیدا کردم، باید از متد streamDownload به جای download استفاده بشه:
return response()->streamDownload(function () use ($url) {
echo file_get_contents($url);
}, $product->file);
@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');
با استفاده از دستور زیر حل شد.
$file_item = File::find($topic->file_id);
// $file_item->file_url == /html.mp4
return Storage::download($file_item->file_url);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟