حسام شبل نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 (معدل) كيف يمكننى تخزين الصور في laravel تم التعديل في 1 سبتمبر 2021 بواسطة Adnane Kadri توضيح السؤال 2 اقتباس
1 Adnane Kadri نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 ستحتاج في هذا إنشاء : ملف عرض : لعرض نموذج الإدخال و رفع الصورة و تقديمها إلى الواجهة الخلفية . متحكم : ليحتوي تابعا يتولى مهمة التحقق من المدخلات و فحص ملف الصورة و تخزينه . مسارين : واحد لعرض نموذج رفع الصورة أو الملف و واحد لإستهداف تابع المتحكم الخاص بالرفع . تعريف المسارين بداخل ملف web.php سيكون كالتالي : Route::view('/upload-image' ,'upload-image'); # إعادة ملف عرض Route::post('/upload-image' , 'UploadImageController@store'); # store إستهداف تابع المتحكم ملف العرض upload-image.blade.php سيحتوي بنية HTML مشابهة للتالي : <form action="/upload-image" method="POST" enctype="multipart/form-data" > <!-- يجب تحديد نوع التشفير --> @method('POST') @csrf <div class="form-group"> <label>صورة</label> <input type="file" name="image" required> </div> <button type="submit">رفع الملف</button> </form> المتحكم UploadImageController.php سيحتوي التابع store بالشيفرة التالية : public function store(Request $request) { // التأكد من أن الطلب يمتلك بالفعل ملف if ($request->hasFile('image')) { // التحقق من الملف صورة بلاحقة ملف صورة $request->validate([ 'image' => 'mimes:jpeg,bmp,png' ]); // images في مجلد app/storage/public تخزين الملف محليا في مجلد $request->image->store('images', 'public'); } return back(); } بعد تقديم النموذج و نجاح التحميل سيمكنك الوصول إلى الملفات المخزنة عن طريق التصفح إلى المسار : app/storage/public/images و ستلاحظ وجود ملف الصورة المرفوعة حديثا . هذا لن يكفي لجعل الصورة قابلة للوصول , فلا يزال عليك إنشاء الرابط الرمزي بين المسارين : storage/public/ و : public/storage سيمكن هذا عن طريق تنفيذ الأمر : php artisan storage:link ستلاحظ إنشاء رابط رمزي بين المجلد storage داخل public و public داخل app/storage . و يمكنك الوصول إلى رابط هاته الصور عن طريق التابع hashName في : // images في مجلد app/storage/public تخزين الملف محليا في مجلد $request->image->store('images', 'public'); $filePath = '/storage' .$request->file->hashName(); اقتباس
0 شرف الدين حفني نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 تريد تخزين الصور في قاعدة البيانات ام على المساحة التخزينية؟ اقتباس
0 Ziyad Hasan نشر 1 سبتمبر 2021 أرسل تقرير نشر 1 سبتمبر 2021 (معدل) أولا يجب إنشاء controller يحتوي علي function بإسم uploadImage كالأتي public function uploadImage(Request $request){ $file = $request->file('photo'); $fileName = time() . '-' . $file-> getClientOriginalName(); $file->move(images , $fileName); Items::create([ 'image'=>$fileName ]) } كما ترى في الكود السابق أولا يتم تخزين الملف في متغير يسمى file$ ثم تخزن إسم الملف مضافا إليه الوقت لكي تعطي إسم مميز لكل صورة في متغير يسمى fileName$ ثم تخزن الملف في مجلد images الذي تم إنشائه في مجلد public عن طريق استخدام function تسمى move ثم يخزن إسم الملف في قاعدة البيانات و تستطيع أن ترسل الملف عن طريق الblade من خلال الform الأتية <form method="POST" action="{{ route('items.insert') }}" enctype="multipart/form-data"> @csrf <div class="form-group"> <label for="exampleInputPassword1">photo</label> <input type="file" name="photo" class="form-control" id="exampleInputPassword1"> @error('photo') <small style="color: red"> {{ $message }} </small> @enderror </div> <button type="submit" class="btn btn-primary">Submit</button> </form> و يجب أن تحتوي الform علي enctype attribute مساوي ل multipart/form-data لكي ترسل الملف وال input يجب أن يحتوي على attribute type مساوي ل file و تنشأ route كالأتي Route::post ('/post' , 'ItemsController@create')->name('items.insert'); تم التعديل في 1 سبتمبر 2021 بواسطة Ziyad Hasan 1 اقتباس
السؤال
حسام شبل
كيف يمكننى تخزين الصور في laravel
تم التعديل في بواسطة Adnane Kadriتوضيح السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.