محمود موسى2 نشر 17 مايو 2021 أرسل تقرير نشر 17 مايو 2021 السلام عليكم، أستخدم postman في عمل test على الapi الخاصة بي.. أستخدم apiResources() كالتالي Route::apiResource('certificates', 'CertificateController'); فأريد التعديل على الcertificate ومن البديهي أنه عندم أرسل PUT Request إلى http://localhost:8000/api/certificates/4 سيتم إستدعاء ميثود update في الكنترولر public function update(Request $request, $id) { $certificate = Certificate::find($id); if (!$certificate) { return $this->returnData(false, 'Certificate Not Found', 404); } $validation = Validator::make($request->all(), [ 'certificate_name_ar' => 'required|max:150|min:3', 'certificate_name_en' => 'required|max:150|min:3', ]); if ($validation->fails()) { return $this->returnData(false, $validation->errors(), 400); } if ($request->hasFile('certificate_file')) { $allowed_extensions = ['jpg', 'jpeg', 'png', 'pdf', 'txt', 'docx']; $extension = $request->file('certificate_file')->getClientOriginalExtension(); $name = time() . '_' . $request->file('certificate_file')->getClientOriginalName(); if (!in_array($extension, $allowed_extensions)) { return $this->returnData(false, "Allowed Extensions Is: " . implode(', ', $allowed_extensions), 400); } $certificateFile = $request->file('certificate_file')->storeAs('certificates', $name); $oldCertificate = $certificate->certificate_file; if($oldCertificate !== null && Storage::disk('certificates')->exists($oldCertificate)){ Storage::disk('certificates')->delete($oldCertificate); } } $certificateName = json_encode([ 'ar' => $request->certificate_name_ar, 'en' => $request->certificate_name_en, ]); $certificateDescription = json_encode([ 'ar' => $request->certificate_description_ar ?? null, 'en' => $request->certificate_description_en ?? null, ]); $certificateStatus = $certificate->update([ 'certificate_name' => $certificateName, 'certificate_description' => $certificateDescription, 'certificate_url' => $request->certificate_url ?? null, 'certificate_file' => $name ?? null ]); return $this->returnData(true, $certificateStatus, 200); } وإعدادات postman كالتالي: قمت بتمرير الباراميترز المطلوبة عادي جدا وفي جزء الBody قمت بجعلها form-data وإخترت المفتاح بإسم certificate_file وجعلته من نوع file وقمت بإختيار الملف وأرسلت الrequest فأجد أنه لم يدخل أبداً في هذا الجزء if ($request->hasFile('certificate_file')) { $allowed_extensions = ['jpg', 'jpeg', 'png', 'pdf', 'txt', 'docx']; $extension = $request->file('certificate_file')->getClientOriginalExtension(); $name = time() . '_' . $request->file('certificate_file')->getClientOriginalName(); if (!in_array($extension, $allowed_extensions)) { return $this->returnData(false, "Allowed Extensions Is: " . implode(', ', $allowed_extensions), 400); } $certificateFile = $request->file('certificate_file')->storeAs('certificates', $name); $oldCertificate = $certificate->certificate_file; if($oldCertificate !== null && Storage::disk('certificates')->exists($oldCertificate)){ Storage::disk('certificates')->delete($oldCertificate); } } وقمت بالتجربة عن طريق return $request; فأجد أيضاً ان جميع الباراميترز التي تم تمريرها موجودة عدا الcertificate_file فهل من حل؟ اقتباس
0 Salah Eddin Beriani2 نشر 17 مايو 2021 أرسل تقرير نشر 17 مايو 2021 أثناء استخدام Postman خاصةً عند اختبار تحميل الملف يرجى التأكد من : في Header ال Content-type يجب ان يكون multipart/form-data في Body حدد form-data و تأكد من اختيار file مكان text وال method لاباس تكون put 1 اقتباس
السؤال
محمود موسى2
السلام عليكم،
أستخدم postman في عمل test على الapi الخاصة بي..
أستخدم apiResources() كالتالي
فأريد التعديل على الcertificate ومن البديهي أنه عندم أرسل PUT Request إلى http://localhost:8000/api/certificates/4 سيتم إستدعاء ميثود update في الكنترولر
وإعدادات postman كالتالي:
قمت بتمرير الباراميترز المطلوبة عادي جدا وفي جزء الBody قمت بجعلها form-data وإخترت المفتاح بإسم certificate_file وجعلته من نوع file وقمت بإختيار الملف وأرسلت الrequest
فأجد أنه لم يدخل أبداً في هذا الجزء
وقمت بالتجربة عن طريق
فأجد أيضاً ان جميع الباراميترز التي تم تمريرها موجودة عدا الcertificate_file
فهل من حل؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.