jrobinsonc
3/7/2013 - 1:44 AM

Función para subir archivos facilmente. (INCOMPLETO)

Función para subir archivos facilmente. (INCOMPLETO)

<?php
/**
 * Funcion para subir archivos.
 *
 * @author JoseRobinson.com
 * @param string $input_name
 * @param string $dir
 * @param bool $replace
 * @return mixed Un array si todo bien o FALSE si algo fallo.
 */
function upload_file($input_name, $dir, $replace = FALSE) {
  if (FALSE === is_uploaded_file($_FILES[$input_name]['tmp_name'])) {
		return FALSE;
	}

	$r = array();
	$r['file_type'] = $_FILES[$input_name]['type'];
	$r['orig_name'] = $_FILES[$input_name]['name'];
	$r['file_size'] = $_FILES[$input_name]['size'];

	$r['file_name'] = preg_replace('#\s+#', '-', trim($_FILES[$input_name]['name']));
	$r['file_name'] = preg_replace('#[^a-zA-Z0-9-_\.]#', '', $r['file_name']);
	$r['file_ext'] = end(explode('.', $r['file_name']));
	$r['raw_name'] = $r['raw_name2'] = substr($r['file_name'], 0, strlen($r['file_name'])-(strlen($r['file_ext'])+1));

	$r['file_path'] = realpath($dir) . DIRECTORY_SEPARATOR;
	$r['full_path'] = "{$r['file_path']}{$r['raw_name']}.{$r['file_ext']}";

	if ($replace === TRUE && file_exists($r['full_path'])) {
		unlink($r['full_path']);
	} else {
		$num = 1;
		while (file_exists($r['full_path'])){
			$num++;
			$r['raw_name'] = "{$r['raw_name2']}{$num}";
			$r['full_path'] = "{$r['file_path']}{$r['raw_name']}.{$r['file_ext']}";
		}
	}

	if (FALSE === move_uploaded_file($_FILES[$input_name]['tmp_name'], $r['full_path'])) {
		return FALSE;
	}

	return $r;
}

<?php

require 'upload_file.php';

if ($_POST) {
  exit(var_export(upload_file('file', './files/', TRUE), TRUE));
}

?>

<form action="index.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="file" value="" />
	<input type="submit" value="Subir" />
</form>