🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ میثم کیانی
تمرین آپلود فایل با محدودیت‌های خاص
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۳ مهر ۱۴۰۲

سلام وقت بخیر خدمت استاد صالحی عزیز و منتورهای گرامی؛

استاد من تمرین رو به این صورت انجام دادم و یک ریفکتورم روی کدها داشتم. اومدم مثل وردپرس که اگه فایلی تکراری باشه یک عدد بهش اضافه میکنه این بخش رو هندل کردم. یعنی هرباری که فایل تکراری اپلود کنیم اولین بار اسم خودشو میزاره دفعات بعدی اسم-1 و الی اخر. هر بخشم کامنت گذاشتم که برای دوستان قابل درک‌تر باشه :

if ( isset( $_POST['upload'] ) ) {
		if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
			# get file uploaded
			$file = $_FILES['file'];
			# Check if a file was uploaded
			if ( $file['error'] === UPLOAD_ERR_OK ) {
				# Get the file extension
				$file_name_part = pathinfo( $file['name'] );
				$extension      = strtolower( $file_name_part['extension'] );
				# Define allowed file extensions
				$allowed_extensions = array( 'jpg', 'jpeg', 'png' );
				# Check if the file extension is allowed
				if ( in_array( $extension, $allowed_extensions ) ) {
					# Check if the file size is not more than 2MB (2 * 1024 * 1024 bytes)
					if ( $file['size'] <= 2 * 1024 * 1024 ) {
						# Set file uploaded in uploads folder on WordPress
						$wp_file_path = wp_upload_dir();
						# Get the current base directory for uploaded files in the form
						$file_path = $wp_file_path['basedir'] . "/custom-uploads-dir";
						# Check if the folder exists; if not, create it
						if ( ! file_exists( $file_path ) ) {
							wp_mkdir_p( $file_path );
						}
						# Check name of uploaded file
						$file_name_part = pathinfo($file['name']);
						$base_name = $file_name_part['filename'];
						$extension = $file_name_part['extension'];
						# Create a new name for the uploaded file
						$counter = 1;
						$new_file_name = $base_name;
						while (file_exists($file_path . '/' . $new_file_name . '.' . $extension)) {
							$new_file_name = $base_name . '-' . $counter;
							$counter++;
						}
						$new_file_name = $new_file_name . '.' . $extension;
						$target_file = $file_path . '/' . $new_file_name;
						# Move the uploaded file to the new file path
						if ( move_uploaded_file( $file['tmp_name'], $target_file ) ) {
							echo "فایل با موفقیت آپلود شد";
						} else {
							echo "فایل به درستی آپلود نشده است";
						}
					} else {
						echo "حجم فایل انتخاب شده بیشتر از 2MB است";
					}
				} else {
					echo "فرمت عکس آپلود شده باید  'jpg', 'jpeg', 'png' باشد";
				}
			} else {
				echo "فایلی آپلود نشد!!!";
			}
		}
	}

بسیار عالی موفق باشید.

محسن موحد ۱۳ مهر ۱۴۰۲، ۱۹:۲۸