Foros del Web » Programando para Internet » PHP »

Problemas con con upload de fotos

Estas en el tema de Problemas con con upload de fotos en el foro de PHP en Foros del Web. Que tal, tengo el siguiente problema: desarrolle un sistema de noticias el cual solo puede subir una foto con un contenido. Ahora el problema es ...
  #1 (permalink)  
Antiguo 29/05/2010, 15:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 10 meses
Puntos: 0
Problemas con con upload de fotos

Que tal, tengo el siguiente problema:

desarrolle un sistema de noticias el cual solo puede subir una foto con un contenido.

Ahora el problema es que me piden que sean 5 fotos las que se suban con ese contenido.

no puedo hacer que suba las otras 4 imagenes, les pego el codigo, espero que me puedan ayudar.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if ($_REQUEST['add']==""){
  4.  
  5.         $nPantalla=0;
  6.  
  7.     }else{
  8.  
  9.         $nPantalla=$_REQUEST['add'];
  10.  
  11.     }
  12.    
  13.    
  14. if ($nPantalla==1){
  15.  
  16.         if((strlen($_FILES['userfile']['name'])>0) ||
  17.            (strlen($_FILES['userfile1']['name'])>0)||
  18.            (strlen($_FILES['userfil2']['name'])>0) ||
  19.            (strlen($_FILES['userfil3']['name'])>0) ||
  20.            (strlen($_FILES['userfile4']['name'])>0)
  21.         )
  22.         {
  23.  
  24.             if ((!copy($_FILES['userfile']['tmp_name'], "imagen/".$_FILES['userfile']['name']))
  25.                 ||(!copy ($_FILES['userfile']['tmp_name'], "imagen/".$_FILES['userfile1']['name']))
  26.                 ||(!copy ($_FILES['userfile']['tmp_name'], "imagen/".$_FILES['userfile2']['name']))
  27.                 ||(!copy ($_FILES['userfile']['tmp_name'], "imagen/".$_FILES['userfile3']['name']))
  28.                 ||(!copy ($_FILES['userfile']['tmp_name'], "imagen/".$_FILES['userfile4']['name']))
  29.                 ){
  30.  
  31.                 printf("Error al subir el archivo...");
  32.  
  33.             }else{
  34.  
  35.                 (($sFile = $_FILES['userfile']['name']) || ($sFile1 = $_FILES['userfile']['name']) || ($sFile2 = $_FILES['userfile']['name']) || ($sFile3 = $_FILES['userfile']['name']) ||($sFile4 = $_FILES['userfile']['name']) );
  36.                
  37.  
  38.             }
  39.  
  40.         }
  41.  
  42.     }
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. ?>

el formulario

Código PHP:
Ver original
  1. <form name="frmUpload" Method="post" Enctype="multipart/form-data" Action="add_noticia.php?add=1">
  2.          
  3.           <table width="658" border="0" cellspacing="4" cellpadding="4">
  4.            
  5.             <tr>
  6.              
  7.               <td width="642" class="menu">
  8.                
  9.                 <strong class="head_tablas style4">
  10.                  
  11.                   Seleccionar el archivo de imagen (el formato debe ser .gif o .jpg):                                               </strong>                                           </td>
  12.                 </tr>
  13.            
  14.             <tr>
  15.              
  16.               <td><input name="userfile" type="file" class="boton" size="30">
  17.                   <input name="userfile3" type="file" class="boton" size="30">
  18.                   <input name="userfile1" type="file" class="boton" size="30">
  19.                   <input name="userfile4" type="file" class="boton" size="30" />
  20.                   <input name="userfile2" type="file" class="boton" size="30">
  21.                
  22.                 <input name="Submit1" type="submit" class="boton" id="Submit1" value="Enviar">                                          </td>
  23.                 </tr>
  24.            
  25.             <tr>
  26.              
  27.               <td class="txt"><span class="head_tablas style4 style3"><span class="head_tablas style4">Si no desea subir alguna imagen haga click en enviar.                                            </span></span></td>
  28.                 </tr>
  29.            
  30.             <tr>
  31.              
  32.               <td class="txt">
  33.                
  34.                 <div align="right"><span class="style5">Regresar al menu. </span><a href="menu_noticias.php"><img src="../imagenes/regresar_f2.png" width="32" height="32" border="0" /></a></div>                                          </td>
  35.                 </tr>
  36.             </table>
  37.            
  38.           </form>

Código PHP:
Ver original
  1. <input name="imgFile" type="text" disabled="disabled" class="campos" value="<?php echo $sFile; ?>" size="20" />
  2.                     <input type="hidden" size="20" name="txtImage" value="<?php echo $sFile; ?>" />
  3.                    
  4.                     <input name="imgFile1" type="text" disabled="disabled" class="campos" value="<?php echo $sFile1; ?>" size="20" />
  5.                     <input type="hidden" size="20" name="txtImage1" value="<?php echo $sFile1; ?>" />
  6.                     <input name="imgFile2" type="text" disabled="disabled" class="campos" value="<?php echo $sFile2; ?>" size="20" />
  7.                     <input type="hidden" size="20" name="txtImage2" value="<?php echo $sFile2; ?>" />
  8.                     <input name="imgFile3" type="text" disabled="disabled" class="campos" value="<?php echo $sFile3; ?>" size="20" />
  9.                     <input type="hidden" size="20" name="txtImage3" value="<?php echo $sFile3; ?>" />
  10.                     <input name="imgFile4" type="text" disabled="disabled" class="campos" value="<?php echo $sFile4; ?>" size="20" />
  11.                     <input type="hidden" size="20" name="txtImage4" value="<?php echo $sFile4; ?>" />

Código PHP:
Ver original
  1. $txtImage=$_REQUEST['txtImage'];
  2. $txtImage1=$_REQUEST['txtImage1'];
  3. $txtImage2=$_REQUEST['txtImage2'];
  4. $txtImage3=$_REQUEST['txtImage3'];
  5. $txtImage4=$_REQUEST['txtImage4'];



Código PHP:
Ver original
  1. $link = mysql_connect("localhost","root","root");
  2.         mysql_select_db("ha_database",$link);
  3.  
  4.         // Con esta sentencia SQL insertaremos los datos en la base de datos
  5.         mysql_query("INSERT INTO noticias (fecha,titulo,contenido,imagen,imagen1,imagen2,imagen3,imagen4)
  6.        
  7.         VALUES ('$sFecha','{$_POST['titulo']}','{$_POST['contenido']}','$txtImage','$txtImage1','$txtImage2','$txtImage3','$txtImage4')",$link);


espero les sirva todo este codigo
  #2 (permalink)  
Antiguo 29/05/2010, 15:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Problemas con con upload de fotos

El proceso de subir las fotos se debe hacer una a una, solo debes ingresar lo que haz hecho en un foreach. También te recomiendo que hagas una nomensclatura, es decir algo como
Código PHP:
Ver original
  1. <input type="file" name="userfile[]" />
  2. <input type="file" name="userfile[]" />
  3. <input type="file" name="userfile[]" />
  4. <input type="file" name="userfile[]" />
  5. <input type="file" name="userfile[]" />
Luego en PHP solo tienes que hacer algo así
Código PHP:
Ver original
  1. foreach ($_FILES["userfile"]["error"] as $key => $error) {
  2.     if ($error == UPLOAD_ERR_OK) {
  3.         $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
  4.         $name = $_FILES["userfile"]["name"][$key];
  5.         move_uploaded_file($tmp_name, "$uploads_dir/$name");
  6.     }
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 29/05/2010, 17:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Problemas con con upload de fotos

entonces lo que he hecho esta correcto solo que hay que modificar esas partes que dices?
  #4 (permalink)  
Antiguo 29/05/2010, 18:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Problemas con con upload de fotos

en $uploads_dir tengo que asignar la carpeta a la cual se subiran los archivos? y como hago esto
  #5 (permalink)  
Antiguo 29/05/2010, 21:04
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Problemas con con upload de fotos

Yo haría un jueguito con DOM+HTML y PHP así

archivo.js

function arch_down(obj) {
Nfile++;
fi = document.getElementById('arc');
contarchs = document.createElement('div');
contarchs.id = 'div'+Nfile;
fi.appendChild(contarchs);
//alert(fi.appendChild(contarchs));
//
arch = document.createElement('input');
arch.type = 'file';
//ape1.name = 'text'+Nfile;
arch.setAttribute("name", "arch" + Nfile);
arch.setAttribute("size", "100");
arch.setAttribute("class", "box");
arch.setAttribute("maxlength", "200");
contarchs.appendChild(arch);
//
N_arch = document.createElement('input');
N_arch.type = 'hidden';
//ape1.name = 'text'+Ninvol;
N_arch.setAttribute("name", "N_arch");
N_arch.setAttribute("value", N_arch);
N_arch.setAttribute("size", "3");
N_arch.setAttribute("maxlength", "3");
contarchs.appendChild(N_arch);
//
L_arch = document.createElement('input');
L_arch.type = 'hidden';
//ape1.name = 'text'+Ninvol;
L_arch.setAttribute("name", "L_arch");
L_arch.setAttribute("value", true);
L_arch.setAttribute("size", "3");
L_arch.setAttribute("maxlength", "3");
contarchs.appendChild(L_arch);

en tu formulario agregas esta línea:
<fieldset id="dow"><input type="button" value="Agregar archivos" onclick="arch_down(this)"></fieldset>

OJO RECUERDA CAMBIAR TU FORM A: enctype="multipart/form-data"

y en el php que procesara esto:

if ($_POST['L_arch'])
{
$N = 1;
$arch ="arch".$N;
while (isset($_FILES["$arch"]['name'])){

$fileName = $_FILES["$arch"]['name'];
$tmpName = $_FILES["$arch"]['tmp_name'];
$fileSize = $_FILES["$arch"]['size'];
$fileType = $_FILES["$arch"]['type'];

//echo "<br><br><br>arch=".$arch."fileName =".$fileName." tmpName =".$tmpName." filisize =".$fileSize." fileType =".$fileType;
$fp = fopen($tmpName, 'r');
$content = fread($fp, $fileSize);
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}

if ($fileSize< 1024){
$numero=number_format($fileSize, 0, ',', '.');
$tipo_unidad="B";
}
if ($fileSize< 1048576){
$numero=number_format($fileSize/1024, 0, ',', '.');
$tipo_unidad="KB";
}
if ($fileSize>= 1048576){
$numero=number_format($fileSize/1048576, 0, ',', '.');
$tipo_unidad="MB";
}

$ins6 = "INSERT INTO inf_file (.... ) VALUES ('...... )";

$result = mysql_query($ins6)or die('Error, fallo el insert de inf_file'.mysql_error());

Te cuento que esto sirve para subir cualquier tipo de archivo y lo gracioso es que el usuario tiene la posibilidad de decidir cuando quiere subir, puede ser uno... 2 o n... Luego si los quieres ver es otra cosa.

Si te sirve esto no sé es trata de refinarla porque cogí un código viejito que se puede mejorar.

Espero que te sirva saludos...
  #6 (permalink)  
Antiguo 30/05/2010, 08:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 10 meses
Puntos: 0
gtacias me sirvio a la perfeccion, ahora solo me resta poder insertar en la base de datos la referencia del nombre de las imagenes para poder mostrarlas posteriormente


SALUDOS CORDIALES

alguien tiene alguna idea?

Última edición por GatorV; 09/06/2010 a las 20:11
  #7 (permalink)  
Antiguo 08/08/2010, 07:23
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con con upload de fotos

hola, recien vi el articulo y necesito algo parecido.

Estoy armando un formulario de inscripcion que tienen que colocar datos de todos tipos en el y a lo ultimo poder subir 9 imagenes. Voy a provar con esto haber si fucniona pero tambien necesitaria despues poder crear una pajina para ver los formularios llenados. ¡Alguien sabe como hacerlo? soy muy newbie en esto
mcswebsis podrias especificar bien ¿que fue lo que te sirvio? si el ultimo post o los anteriores

Gracias

Etiquetas: fotos, upload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:34.