ايمن ميلاد نشر 18 ديسمبر 2023 أرسل تقرير نشر 18 ديسمبر 2023 السلام عليكم اخواني كرام ممكن طريقة رفع ملف pdf الي قاعدة بيانات ثم عرض كل ملف في صف في جدول بحيث اضغط علي تنزيل يتحمل معاي 1 اقتباس
0 Khaled Osama3 نشر 18 ديسمبر 2023 أرسل تقرير نشر 18 ديسمبر 2023 باستخدام لارافيل: يمكنك تخزين الملف عندك في Storage وتحفظ المسار فقط في الداتابيز وعندما تريد عرض او تحميله فقط ستذهب لكل ملف الي المسار خاص به 1. إنشاء موديل PdfFile وأضف حقلين، أحدهما لاسم الملف والآخر للمسار path: $table->string('name'); $table->string('path'); 2. في ميثود التحميل ضع الملف في مجلد uploads بداخل storage: $file = $request->file('file'); $fileName = $file->getClientOriginalName(); $path = $file->store('uploads','public'); عندما نستخدم store مع إعطاء اسم المجلد كـ'uploads'، فإن لارافيل سيقوم تلقائيا بإنشاء هذا المجلد داخل storage/app/public إن لم يكن موجوداً مسبقاً. ثم يقوم بتخزين الملف داخل هذا المجلد. بحيث يكون المسار النهائي للملف هو: storage/app/public/uploads/file-name.pdf 3. احفظ المسار فقط في حقل path بدلاً من الملف: $this->path = $path; $this->name = $fileName; $this->save(); 4. عند العرض أو التحميل، اذهب مباشرة إلى المسار: <a href="{{ asset('storage/' . $pdf->path) }}"> تحميل </a> بهذه الطريقة سيتم تخزين الملفات فعلياً في storage والاحتفاظ بالمسار فقط في الداتابيز. https://wiki.hsoub.com/Laravel/filesystem اقتباس
0 Adnane Kadri نشر 18 ديسمبر 2023 أرسل تقرير نشر 18 ديسمبر 2023 لا يتم رفع الملفات بشكل مباشر الى قواعد البيانات عادة، بل يتم رفعها الى نظم الملفات ويتم حفظ مسارات اليها في قاعدة البيانات ليتم عرضها عند الاستعلام. وطريقة خالد في الإجابة السابقة تقتضي ذلك. هنالك طريقة أخرى، قد يمكن اعتبارها حلا مؤقتا نسبيا. وهي عن طريق تحويل هاته الملفات الى سلاسل نصية مكودة بـ base64، ولاحقا يتم الغاء تشفيرها بها لتعود على هيئتها. // قراءة ملف البي دي اف او التقاطه من الطلبية $pdfContent = file_get_contents($pdfFilePath); // تحويله $base64String = base64_encode($pdfContent); // حقنه في قواعد البيانات $sql = "INSERT INTO files (encoded_string) VALUES ('$base64String')"; يرجى الاشارة أيضا الى أن الحقل encoded_string يجب أن يستوعب أعداد محارف كبيرة، لأن السلسلة الناتجة ستكون كبيرة جدا. اقتباس
0 Mohammad Jumaa نشر 19 ديسمبر 2023 أرسل تقرير نشر 19 ديسمبر 2023 وعليكم السلام، لرفع ملف PDF إلى قاعدة بيانات وعرضه في جدول مع خيار التنزيل، يمكنك اتباع الخطوات التالية: تحضير قاعدة البيانات: قم بإنشاء جدول في قاعدة البيانات تحتوي على عمود لتخزين الملفات. يمكن استخدام النوع BLOB أو أي نوع آخر مناسب لتخزين الملفات الثنائية. يمكنك استخدام ميجريشن لارافيل لإنشاء هذا الجدول. إنشاء (Model): إنشاء نموذج للتعامل مع بيانات الجدول. كتابة واجهة لرفع الملفات: استخدم لغة القوالب Blade لإنشاء نموذج HTML لرفع الملفات. تأكد من تحديد enctype="multipart/form-data" في الفورم للسماح برفع الملفات. معالجة طلب الرفع في الكنترولر (Controller): في الكنترولر، اكتب الكود اللازم لمعالجة طلب الرفع وحفظ الملف في قاعدة البيانات. يمكنك استخدام طريقة $request->file('pdfFile') للحصول على الملف المرفوع. عرض الجدول مع خيارات التنزيل: استخدم Blade لإنشاء جدول يعرض الملفات المرفوعة. كل صف في الجدول يجب أن يحتوي على رابط لتنزيل الملف. معالجة طلب التنزيل في الكنترولر: اكتب كود في الكنترولر لمعالجة طلب التنزيل. يجب أن يقوم الكود بقراءة الملف من قاعدة البيانات وإرساله كاستجابة مع تعيين رؤوس الاستجابة بشكل مناسب للتنزيل. مثال على الكود: (Controller): use App\Models\PdfFile; // تأكد من استيراد النموذج الخاص بك use Illuminate\Http\Request; public function upload(Request $request) { $file = $request->file('pdfFile'); $blob = file_get_contents($file->getRealPath()); $pdfFile = new PdfFile(); $pdfFile->file_data = $blob; $pdfFile->save(); return back(); } public function download($id) { $pdfFile = PdfFile::findOrFail($id); return response($pdfFile->file_data) ->header('Content-Type', 'application/pdf') ->header('Content-Disposition', 'attachment; filename="download.pdf"'); } الفورم في Blade: <form action="{{ route('pdf.upload') }}" method="post" enctype="multipart/form-data"> @csrf <input type="file" name="pdfFile"> <button type="submit">Upload</button> </form> عرض الجدول في Blade: @foreach(PdfFile::all() as $file) <tr> <td>{{ $file->name }}</td> <td><a href="{{ route('pdf.download', $file->id) }}">Download</a></td> </tr> @endforeach تأكد من تعديل الكود ليتناسب مع بنية تطبيقك وقاعدة بياناتك. كما يجب الانتباه لأمان البيانات والتحقق من الملفات قبل رفعها. اقتباس
0 ايمن ميلاد نشر 19 ديسمبر 2023 الكاتب أرسل تقرير نشر 19 ديسمبر 2023 بارك الله فيكم علي الرد اخواني الكرام لكن انا اعمل بي mysqli وليس لارافيل اقتباس
0 Adnane Kadri نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 بتاريخ On 19/12/2023 at 09:29 قال ايمن ميلاد: بارك الله فيكم علي الرد اخواني الكرام لكن انا اعمل بي mysqli وليس لارافيل اطلع على الإجابة السابقة، فهي تقتضي استعمال PHP مباشرة بتاريخ On 18/12/2023 at 22:25 قال Adnane Kadri: لا يتم رفع الملفات بشكل مباشر الى قواعد البيانات عادة، بل يتم رفعها الى نظم الملفات ويتم حفظ مسارات اليها في قاعدة البيانات ليتم عرضها عند الاستعلام. وطريقة خالد في الإجابة السابقة تقتضي ذلك. هنالك طريقة أخرى، قد يمكن اعتبارها حلا مؤقتا نسبيا. وهي عن طريق تحويل هاته الملفات الى سلاسل نصية مكودة بـ base64، ولاحقا يتم الغاء تشفيرها بها لتعود على هيئتها. // قراءة ملف البي دي اف او التقاطه من الطلبية $pdfContent = file_get_contents($pdfFilePath); // تحويله $base64String = base64_encode($pdfContent); // حقنه في قواعد البيانات $sql = "INSERT INTO files (encoded_string) VALUES ('$base64String')"; يرجى الاشارة أيضا الى أن الحقل encoded_string يجب أن يستوعب أعداد محارف كبيرة، لأن السلسلة الناتجة ستكون كبيرة جدا. اقتباس
0 ايمن ميلاد نشر 22 ديسمبر 2023 الكاتب أرسل تقرير نشر 22 ديسمبر 2023 بتاريخ 3 دقائق مضت قال Adnane Kadri: اطلع على الإجابة السابقة، فهي تقتضي استعمال PHP مباشرة انا اريد طريقة تحميل ملف pdf هدا يكون مخزن في قاعدة بيانات بحيث عندما اضغط تحميل ينزل ملف مثلا عندما احمل ملف pdf من موقع مكتبة كتب من نت هل فهمت علي اخي انا اساسا لا اتعمل معا اطار عمل لارافل ياريت ترفق لي حتا رابط يشرح طريقة اقتباس
السؤال
ايمن ميلاد
السلام عليكم اخواني كرام
ممكن طريقة رفع ملف pdf الي قاعدة بيانات ثم عرض كل ملف في صف في جدول بحيث اضغط علي تنزيل يتحمل معاي
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.