Si te dice eso es porque no se está evaluando bien este condicional:
if ($_POST["action"] == "upload") {
o este otro:
if (move_uploaded_file($_FILES['archivo']['name'],$destino))
Para comprobar el segundo, hace una impresion en pantalla de esto para chequear que está bien la ruta:
echo $destino;
Y no utilices un mismo mensaje para dos errores distintos porque dificulta el debug! "Error al subir archivo";
Por otro lado, es importante que chequees si realmente hay un archivo subido aquí:
$_FILES['archivo']
Esto último suele hacerse, por ejemplo, así:
En el ejemplo, "foto" tiene que corresponderse con el atributo name del <input type="file">
(o "archivo" en tu caso)