Jump to content


Photo

Upload de Multiples Imagenes


  • Please log in to reply
No replies to this topic

#1 davidchavez92

davidchavez92

    Newbie

  • Miembros
  • Pip
  • 1 posts

Posted 27 January 2012 - 12:31 PM

Tengo problemas al intentar subir varias imagenes poniendo el name del input type file como vector, simplemente no guarda las imagenes, solo funciona subiendo una, al intentar subir mas de una no las guarda, da un error asi:
Warning: copy(Array) [function.copy]: failed to open stream: No such file or directory in C:\AppServ\www\website\upload.php on line 43

Estos son los codigos...
Ejm:
<!-- archivo upload.php -->

<script type="text/javascript">
var numero = 0; //Esta es una variable de control para mantener nombres
            //diferentes de cada campo creado dinamicamente.
evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
  return (!evt) ? event : evt;
}

//Esta funcion crea dinamicamente los nuevos campos file
addCampo = function () {
//Creamos un nuevo div para que contenga el nuevo campo
  nDiv = document.createElement('div');
//con esto se establece la clase de la div
  nDiv.className = 'archivo';
//este es el id de la div, aqui la utilidad de la variable numero
//nos permite darle un id unico
  nDiv.id = 'file'  (  numero);
//Espacios
  nDiv.innerHTML = '<br />';
//creamos el input para el formulario:
  nCampo = document.createElement('input');
//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
//compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
  nCampo.name = 'archivos[]';
//Establecemos el tipo de campo
  nCampo.type = 'file';
//Clase de estilo
  nCampo.className ='files';
//Ahora creamos un link para poder eliminar un campo que ya no deseemos
  a = document.createElement('a');
//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
  a.name = nDiv.id;
//Clase para color de links
  a.className = 'link';
//Este link no debe ir a ningun lado
  a.href = '#';
//Establecemos que dispare esta funcion en click
  a.onclick = elimCamp;
//Con esto ponemos el texto del link
  a.innerHTML = '&nbsp;Remove';
//Bien es el momento de integrar lo que hemos creado al documento,
//primero usamos la función appendChild para adicionar el campo file nuevo
  nDiv.appendChild(nCampo);
//Adicionamos el Link
  nDiv.appendChild(a);
//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
//con esta función obtenemos una referencia a ella para usar de nuevo appendChild
//y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
  container = document.getElementById('adjuntos');
  container.appendChild(nDiv);
}
//con esta función eliminamos el campo cuyo link de eliminación sea presionado
elimCamp = function (evt){
  evt = evento(evt);
  nCampo = rObj(evt);
  div = document.getElementById(nCampo.name);
  div.parentNode.removeChild(div);
}
//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) {
  return evt.srcElement ?  evt.srcElement : evt.target;
}
</script>

<!-- fin de la funcion y comienza el html -->

<form action="upload.php" method="post" enctype="multipart/form-data">
<div>           
<div align="justify"><label><h2>File to Upload:</h2></label></div>
<!-- Esta div contendrá todos los campos file que se van a crear -->
<div><div id="adjuntos" align="justify">
<!-- El nombre de este campo debe siempre terminar en [] como un vector, y ademas,
debe coincidir con el nombre que se da a los campos nuevos en el script -->
<input type="file" name="archivos" class="files" /><br />
<?php

$SafeFile = $_FILES['archivos']['name'];
$SafeFile = str_replace("#", "No.", $SafeFile);
$SafeFile = str_replace("$", "Dollar", $SafeFile);
$SafeFile = str_replace("%", "Percent", $SafeFile);
$SafeFile = str_replace("^", "", $SafeFile);
$SafeFile = str_replace("&", "and", $SafeFile);
$SafeFile = str_replace("*", "", $SafeFile);
$SafeFile = str_replace("?", "", $SafeFile);

$uploaddir = "files/";
$path = $uploaddir.$SafeFile;
if($archivos != none){ //AS LONG AS A FILE WAS SELECTED...

    if(copy($_FILES['archivos']['tmp_name'], $path)){ //IF IT HAS BEEN COPIED...

        //GET FILE NAME
        $theFileName = $_FILES['archivos']['name'];

        //GET FILE SIZE
        $theFileSize = $_FILES['archivos']['size'];

        if ($theFileSize>999999){ //IF GREATER THAN 999KB, DISPLAY AS MB
            $theDiv = $theFileSize / 1000000;
            $theFileSize = round($theDiv, 1)." MB"; //round($WhatToRound, $DecimalPlaces)
        } else { //OTHERWISE DISPLAY AS KB
            $theDiv = $theFileSize / 1000;
            $theFileSize = round($theDiv, 1)." KB"; //round($WhatToRound, $DecimalPlaces)
        }?>
<table cellpadding='5' width='300'>
<tr>
    <td align='center' colspan='2'><font color='#009900'><b>Upload Successful</b></font></td>
</tr>
<tr>
    <td align='right'><b>File Name: </b></td>
    <td align='left'><?php $theFileName; ?></td>
</tr>
<tr>
    <td align='right'><b>File Size: </b></td>
    <td align='left'><?php $theFileSize; ?></td>
</tr>
<tr>
    <td align='right'><b>Directory: </b></td>
    <td align='left'><?php $uploaddir; ?></td>
</tr>
</table>

    <?php } else {?>

<!-- PRINT AN ERROR IF THE FILE COULD NOT BE COPIED-->
<table cellpadding='5' width='80%'>
<tr>
<td align='center' colspan='2'><font color=\'#C80000\'><b>File could not be uploaded</b></font></td>
</tr>
</table><?php
    }
}

?>
</div></div><br /><br />
<div align="justify"><a href="#" class="link" onClick="addCampo()">Upload another File</a></div><br />
<div align="justify"><input type="submit" value="Upload" class="btn" id="envia" name="envia" /></div>
</div>
</form>


<!-- archivo view.php -->

<?php
  //Preguntamos si nuetro arreglo 'archivos' fue definido
        if (isset ($_FILES["archivos"])) {
        //de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
        //obtenemos la cantidad de elementos que tiene el arreglo archivos
        $tot = count($_FILES["archivos"]["name"]);
        //este for recorre el arreglo
        for ($i = 0; $i < $tot; $i  ){
        //con el indice $i, poemos obtener la propiedad que desemos de cada archivo
        //para trabajar con este
            $tmp_name = $_FILES["archivos"]["tmp_name"][$i];
            $name = $_FILES["archivos"]["name"][$i]; ?>
            Archivo: <?php $key ?><br />
            Nombre original:<?php $name ?><br />
            Nombre temporal:<?php $tmp_name;<br /><br />
            }
      }     
?>




  • 0




IP.Board spam blocked by CleanTalk.