Da hast Du nicht ganz unrecht, ich habe vor einiger Zeit vor dem selben Problem gestanden.
Kern der Sache ist ja ein Eingabefeld vom Typ "file", mit dem man die Datei(en) auswählt. Normalerweise ist dies Bestandteil eines Formulars und wenn man das mit Submit abschickt, wird die Datei hochgeladen, ohne dass man weiteres dazu tun muss.
Interessant wird es dann auch auf den Server, weil die Datei(en) mit temporären Namen ankommen und man sie verschieben muss auf den Dateinamen und das Verzeichnis, wie man es braucht. Sieht dann i. allg. so aus:
PHP
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
var_dump($_FILES);
var_dump(empty($_FILES));
$sourcePath = $_FILES['img']['tmp_name']; // Storing source path of the file in a variable
$targetPath = "uploads/" . $_FILES['img']['name']; // Target path where file is to be stored
echo $sourcePath; echo $targetPath;
move_uploaded_file($sourcePath, $targetPath) ; // Moving Uploaded file
?>
'img' ist dabei nicht fest vorgegeben, sondern der Name des file-Eingabefeldes; man kann sich leicht davon überzeugen, wenn man sich den Vardump von $_FILES ansieht.