Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/08/2016, 12:57
xerifandtomas
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Problemas con move_uploaded_file

Te paso un Script que puse aquí hace algún tiempo como ejemplo para subir varias imagenes.

Código PHP:
<?php
/**

* XERIFANDTOMAS
*
*  Guarda una o varias imagenes en el servidor
*
* @param array $file ( OBILIGATORIO )
*   Debe de pasarse $_FILES habiendo subido los archivos en el form con name="myNombre[]"
*
* @param string $nombre ( OPCIONAL )
*   Default: img
*   nombre para la imagen,los caracteres extraños seran cambiados por eliminar_simbolos()
*   Se añade marca de tiempo+identificador ( dmYHis-key )
*   Ejemplo: MyImg-21022016154613-1.jpg
*
* @param string $ruta ( OPCIONAL )
*   Default: $_SERVER['DOCUMENT_ROOT']/img/
*   Ruta de la imagen final 
*
* @param string $max_size ( OPCIONAL )
*   Default: 2000000 (5MB)
*   Tamaño máximo permitido de la imagen
*
* @param int $max_archivos ( OPCIONAL )
*   Default: 5
*   Número máximo de archivos que se pueden subir a la vez
*
*
*
* @return ARRAY / String
*  En caso de éxito:  Devuelve un array con los nombres de las imagenes
*  En caso de error:  Debuelve un string con el mensaje de error
*/
function upload_img($file,$nombre="img",$ruta="",$max_size"2000000",$max_archivos=5){
    
$tipos_de_archivos= array("image/jpeg","image/jpg","image/png");

    if (
$ruta=="") { $ruta $_SERVER['DOCUMENT_ROOT']."/img/"; }
    if ( !
file_exists($ruta) ) { 
        if( !
mkdir($ruta0775true) ){ return false; }
    }

    
$key_files=array_keys($file);
    
$numero_de_archivoscount($file[$key_files[0]]['name']);
    if (
$numero_de_archivos<1) {return 'No se ha cargado ningun archivo.';}
    if (
$numero_de_archivos>$max_archivos) {return 'Solo se pueden subir <b>'.$max_archivos.' archivos</b> a la vez.';}
    if ( !
is_array($file[$key_files[0]]['tmp_name']) ){return 'Se deben subir los archivos como un array.';}

    
$tmp_name$file[$key_files[0]]['tmp_name'];
    
$type$file[$key_files[0]]['type'];
    
$size$file[$key_files[0]]['size'];
    
$name$file[$key_files[0]]['name'];
    
$error$file[$key_files[0]]['error'];

    foreach (
$tmp_name as $k => $v) {
        if (!
is_uploaded_file($v)) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.';}
    }
    foreach (
$error as $k => $v) {
        if (
$v!==0) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.';}
    }
    foreach (
$type as $k => $v) {
        if (!
in_array($v$tipos_de_archivos)){return '<br/>El archivo <b>'.$name[$k].'</b> no esta permitido. Solo archivos JPG, JPEG, PNG.';}
    }
    foreach (
$size as $k => $v) {
        if (
$v>$max_size) {return '<br/>El archivo <b>'.$name[$k].'</b> supera el tama&ntilde;o permitido.';}
    }
    foreach (
$name as $k => $v) {
        
$extension end(explode('.'$v));
        
$nombre_final[$k]=$nombre.'-'.date('dmYHis').'-'.$k.'.'.$extension
    }
    
    foreach (
$tmp_name as $k => $v) {
        
$destino$ruta.$nombre_final[$k];
        if(!
move_uploaded_file($v$destino)){return '<br/>No se ha podido mover el archivo al servidor.';}
        
$n[]=$nombre_final[$k];
    }
return 
$n;
}
?>
Respecto a

Bien puedes modificarlo en el php.ini de forma global

O si solo es necesario para ese Script establecerlo de forma local con un .htaccess con las siguientes líneas

Cita:
php_value post_max_size 10M
php_value upload_max_filesize 10M
Puedes leer un artículo al respecto aquí
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 06/08/2016 a las 04:03