اسماعيل صدوقي نشر 18 أبريل 2021 أرسل تقرير نشر 18 أبريل 2021 الصور لا تظهر في الموقع ,نشرت تطبيق لارافيل على منصة heroku و واضع الصور في ملف storage و كتبت الامر php artizan storage:link هذا رابط الموقع http://sadouki-cms.herokuapp.com/ كيف يمكنني حل المشكلة ؟ 1 اقتباس
1 Adnane Kadri نشر 18 أبريل 2021 أرسل تقرير نشر 18 أبريل 2021 (معدل) للأسف سرفرات هيروكو تمتلك تخزين " سريع الزوال " , أي انك تستطيع اضافة الملفات والصور الى القرص غير أن هاته الملفات لن تكون حاضرة في حالة رفع جديد أو اعادة تشغيل التطبيق وهذا خلال 24 ساعة فحل المشكلة هو اما بـ : 1 . استعمال التخزين العام بداخل مجلد الpublic مباشرة , وهذا بالتعديل على ملف config/filesystems.php : <?php 'heroku_public' => [ 'driver' => 'local', 'root' => public_path() . '/uploads', ], ومن ثم استعمال نمط التخزين على هذا النحو : <?php use Illuminate\Support\Facades\Storage; ... Storage::disk('heroku_public')->put($your_path, $your_file_content) غير أن هذا لن يحل المشكلة ككل و ستبقى الملفات عامة و ظاهرة و هذا لن يكون في الصالح في حال ما أردت حماية خصوصية المستخدمين . فالحل النهائي هو باستخدام تخزين خارجي تماما . مثل : cloudinary , aws s3 . وخصوصا مع الكثير من الأشياء التي يجعل لارافل العملية بها سهلة . و اقترح بقوة استعمال cloudinary cloud storage فسرفرات هيروكو تتوفر على اضافة add-ons تسهل ذلك باسم cloudinary . و من جانب اللارافل موجود على الgithub باكج مفتوحة المصدر تسهل ربط التطبيق بتخزين الكلاود الخاص بك على كلاوديناري باسم laravel-cloudinary . تم التعديل في 18 أبريل 2021 بواسطة Adnane Kadri 3 اقتباس
0 يوسف احمد9 نشر 19 أبريل 2021 أرسل تقرير نشر 19 أبريل 2021 المشكله ان Heroku's filesystem سربعة الزوال ولذلك لدينا اكثر من حل اسهلهم ان نقوم بعمل راوت لكى يقوم بارجاع الصور لنا من فولدر ال storage كالمثال التالى : Route::get('images/{filename}', function ($filename) { $path = storage_path() . '/img/' . $filename; if(!File::exists($path)) abort(404); $file = File::get($path); $type = File::mimeType($path); $response = Response::make($file, 200); $response->header("Content-Type", $type); return $response; }); حل اخر وهوا ان نتستخدم Amazon S3 وهذا طبعا حل ليس مجانى ايضا حل اخر وهوا ان تقوم برفع الصور فى فولدر ال public ولكن هذا الحل غير مفضل لاغراض الحماية 1 اقتباس
0 بلال زيادة نشر 19 أبريل 2021 أرسل تقرير نشر 19 أبريل 2021 أنصحك بعدم استخدام heroku إلا للتجريب فقط و إذا كان مشروعك بشكل دائم قم بشراء حزمة من heroku أو قم بالأشتراك في استضافة او سيرفر كلاود حتى لا تحدث لك هذه المشكلة مجدداً, لذلك لا تضع مشاريع فعلية على heroku المجانية. ثم يمكنك تخزين الصور بداخل مجلد Public حتى تتفادى عمليات المسح المتكرر من قبل شركة heroku فمثلاً, if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $category->image = \URL::to('').'/categories/images/' . $img; $request->image->move(public_path('categories/images'), $img); } أو استخدام AWS S 3 بهذا الشكل $files = $request->file('image'); $errors = []; $i = 0; foreach ($files as $file) { $flebImages = new FlebImage(); $watermark = Image::make(public_path('images/logo.png')); $name = time() . $file->getClientOriginalName(); $img = Image::make($file); $watermarkSize = $img->width() - 20; //size of the image minus 20 margins //#2 $watermarkSize = $img->width() / 5; //half of the image size //#3 $resizePercentage = 70;//70% less then an actual image (play with this value) $watermarkSize = round($img->width() * ((100 - $resizePercentage) / 100), 2); //watermark will be $resizePercentage less then the actual width of the image // resize watermark width keep height auto $watermark->resize(70, 70, function ($constraint) { $constraint->aspectRatio(); }); $watermark->opacity(50); //insert resized watermark to image center aligned //$img->insert($watermark, 'center'); /*$img->resize(500, 500, function ($constraint) { $constraint->aspectRatio(); //$constraint->upsize(); });*/ //$img->insert(public_path('images/logo.jpeg'), 'bottom-right', 10, 10); $img->insert($watermark, 'bottom-right', 10, 10); $filePath = 'flebs/'. $flebFolder . '/' . $name; //detach method is the key! Hours to find it... : $resource = $img->stream()->detach(); \Storage::disk('s3')->put($filePath, $resource); $flebImages->image = \Storage::disk('s3')->url($filePath); $flebImages->save(); } 1 اقتباس
السؤال
اسماعيل صدوقي
الصور لا تظهر في الموقع ,نشرت تطبيق لارافيل على منصة heroku و واضع الصور في ملف storage و كتبت الامر php artizan storage:link
هذا رابط الموقع http://sadouki-cms.herokuapp.com/
كيف يمكنني حل المشكلة ؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.