Mahmoud Alrashidi نشر 24 فبراير 2021 أرسل تقرير نشر 24 فبراير 2021 أستخدم لارافيل و أحاول رفع ملف و حفظه: public function test(Request $request) { $fileInForm = 'file'; if ($request->hasFile($fileInForm)) { $file = $request->file($fileInForm); if ($file->isValid()) { $hashedName = hash_file('md5', $file->path()); $timestamp = microtime(); $newFilename = $hashedName . $timestamp . '.' . $file->getClientOriginalExtension(); Storage::disk('local')->put($newFilename, $file); } } } لكن المُشكلة أن الملف يتم حفظه في مُجلد باسم مُختلف في كل مرة و إسم المُجلد يكون نفس الإسم الذي أضعه. هل يُمكن حفظ الملف في مجلد واحد و ليس كل ملف في مجلد لوحده. 1 اقتباس
0 سمير عبود نشر 24 فبراير 2021 أرسل تقرير نشر 24 فبراير 2021 تحدث هذه المُشكلة لك بسبب أنك حددت إسم المُجلد في المُعامل الأول للدالة put، مثلاً إن كنت تريد وضع الملفات داخل مُجلد images يُمكنك ذلك من خلال: public function test(Request $request) { $fileInForm = 'file'; if ($request->hasFile($fileInForm)) { $file = $request->file($fileInForm); if ($file->isValid()) { // Filename is hashed filename + part of timestamp $hashedName = hash_file('md5', $file->path()); $timestamp = microtime(); $newFilename = $hashedName . $timestamp . '.' . $file->getClientOriginalExtension(); Storage::disk('local')->putFile('images', $file); } } } في هذه الحالة سيتم حفظ الملفات داخل مُجلد images و ستُعطي لارافيل إسم مُختلف للملف المرفوع في كل مرة تلقائياً، و ستُرجع الدالة putFile المسار الذي تم حفظ الملف فيه يُمكنك حفظه إن احتجت له. إن كنت ترغب في وضع الإسم الذي يُحفظ به الملف بنفسك يُمكنك إستخدام الدالة putFileAs بنفس الطريقة و تُمرر الإسم الذي ترغب فيه كمعامل ثالث: public function test(Request $request) { $fileInForm = 'file'; if ($request->hasFile($fileInForm)) { $file = $request->file($fileInForm); if ($file->isValid()) { // Filename is hashed filename + part of timestamp $hashedName = hash_file('md5', $file->path()); $timestamp = microtime(); $newFilename = $hashedName . $timestamp . '.' . $file->getClientOriginalExtension(); Storage::disk('local')->putFileAs('images', $file, $newFilename); } } } تُرجع الدالة أيضاً مسار الملف. تُتيح لارافيل أيضاً دالتي store و storeAs لكن هاتين الدالتين لا تُستخدمان بإستعمال الfacade بل مُباشرة على الملف بهذا الشكل مثلاً: $path = $request->file('file')->store('images'); $path = $request->file('file')->storeAs( 'images', $newName ); 2 اقتباس
السؤال
Mahmoud Alrashidi
أستخدم لارافيل و أحاول رفع ملف و حفظه:
لكن المُشكلة أن الملف يتم حفظه في مُجلد باسم مُختلف في كل مرة و إسم المُجلد يكون نفس الإسم الذي أضعه. هل يُمكن حفظ الملف في مجلد واحد و ليس كل ملف في مجلد لوحده.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.