Foros del Web » Programando para Internet » PHP »

No me sube imagen

Estas en el tema de No me sube imagen en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario que entre otras cosas quiero subir una imagen. El problema es que no me sube la imagen, me da ...
  #1 (permalink)  
Antiguo 04/06/2011, 08:28
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
No me sube imagen

Hola a todos, tengo un formulario que entre otras cosas quiero subir una imagen. El problema es que no me sube la imagen, me da error :S

Este es el codigo del form.php

Código PHP:
<form enctype="multipart/form-data" method="post" action="anadirserie_ajax.php" id="fo3" name="fo3" >
      <
fieldset>
        <
legend>Nueva Serie</legend>
        <
ol>
            <
li><label>Nombre de la Serie:</label><br><input type="text" size="30" name="titulo" /></li>
            <
li><label>Link de descarga de Series Yonkis:</label><br><input type="text" size="30" name="sy" /></li>
            <
li><label>Link de descarga de Series Danko:</label><br><input type="text" size="30" name="sd" /></li>
            <
li><label>Caratula:</label><br><input name="archivo" id="archivo" type="file" /></li>
        </
ol>
        <
input type="submit" name="mysubmit" id="mysubmit" value="Enviar" />
      </
fieldset>
</
form
y este del archivo que procesa el form, mas exactamente el campo del file="type"

Código PHP:
     $tamano $_FILES["archivo"]['size'];

    
$tipo $_FILES["archivo"]['type'];

    
$archivo $_FILES["archivo"]['name'];

    
$prefijo substr(md5(uniqid(rand())),0,6);

    

    if(
$archivo == ""){

        
$destino 'default.png';

    }

    

    if (
$archivo != "") {

        
// guardamos el archivo a la carpeta as

        
$destino =  "as/".$prefijo."_".$archivo;

        if (
copy($_FILES["archivo"]['tmp_name'],$destino)) {

            echo 
"Archivo subido: <b>".$archivo."</b>";

        } else {

            echo 
"Error al subir el archivo2";

        }

    } else {

        echo 
"Error al subir archivo1";

    } 
Os tengo que decir que tambien me procesa los otros campos pero esos no me da ningun error, solo al subir el archivo. Otra cosa que igual influye algo es que el formulario lo proceso mediante ajax y mi sistema operativo es Ubuntu. Y si, ya cambie los permisos a la carpeta "as/" a 777
  #2 (permalink)  
Antiguo 04/06/2011, 08:34
 
Fecha de Ingreso: julio-2010
Mensajes: 43
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: No me sube imagen

Amigo al parecer tu problema viene por que el formulario procesas con ajax y por medio de ajax no es posible subir archivos, te recomiendo que lo intentes de manera convencional lo pasando el formulario y es seguro el archivo se carga.
  #3 (permalink)  
Antiguo 04/06/2011, 08:34
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: No me sube imagen

Bueno en el archivo que procesa agrega esto:
echo '<pre>';
var_dump($_FILES);
echo '</pre>';
si no te llega nada vemos el form
  #4 (permalink)  
Antiguo 04/06/2011, 08:35
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: No me sube imagen

Yo no veo nada de ajax mas que el nombre del action
  #5 (permalink)  
Antiguo 04/06/2011, 08:43
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: No me sube imagen

Hola.

¿Qué dice el error?
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #6 (permalink)  
Antiguo 04/06/2011, 08:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: No me sube imagen

concuerdo con @Patriarka: no hay nada de AJAX, solo el nombre, ese es el problema de no asociar nombres nemotécnicos que den semántica al código, lo que lo vuelve confuso.

lo ideal en este caso es que @Jota_sk posteara el error, aunque según mi experiencia siempre es caso de:

1- falta de permisos de escritura en la carpeta.
2- archivo muy grande, aumentar el tamaño de la directiva del php.ini upload_max_filesize
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 04/06/2011, 08:56
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No me sube imagen

el codigo del ajax esta todo arriba

Código PHP:
<script type="text/javascript" src="js/jquery-1.4.3.min.js"></script>
<script language="javascript">
$(document).ready(function() {
   // Esta primera parte crea un loader no es necesaria
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
   // Interceptamos el evento submit
    $('#form, #fat, #fo3').submit(function() {
  // Enviamos el formulario usando AJAX
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            // Mostramos un mensaje con la respuesta de PHP
            success: function(data) {
                $('#result').html(data);
            }
        })        
        return false;
    });
})  
</script> 
Patriarka
Si pongo ese codigo me sale lo sigueinte

Código PHP:
Error al subir archivo1array(0) { } 
Lo he puesto fuera del if

maycolalvarez
No creo que sea por permiso, porque la carpeta donde se suben los archivos tiene 777 de permisos. Se lo he cambiado con "sudo chmod 777"

Y respecto a lo del php.ini lo tengo de la siguiente manera:

upload_max_filesize = 50M
  #8 (permalink)  
Antiguo 04/06/2011, 08:56
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: No me sube imagen

Cita:
Iniciado por Jota_sk Ver Mensaje
Otra cosa que igual influye algo es que el formulario lo proceso mediante ajax y mi sistema operativo es Ubuntu. Y si, ya cambie los permisos a la carpeta "as/" a 777
¿Como que lo procesas con Ajax? Yo sólo veo php

¿Puedes hacer un echo de la variable a ver si está vacía?
Muestranos el tipo y el tamaño del archivo también para hacernos una idea de donde puede estar el fallo

¿Por que todo el mundo asigna 777 cuando valdria un (r-w-x) 664 ?
Código PHP:
chmod($ruta0664
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #9 (permalink)  
Antiguo 04/06/2011, 09:04
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No me sube imagen

Es de los primeros pasos con ajax que hago. No lo proceso con ajax, si no que envio los datos mediante ajax a otro fichero, y este lo procesa, y luego me envia los resultados de vuelta al archivo para mostrarme si ha habido un error o si se ha procesado correctamente. Se pocresa todo con PHP.

Yo lo que quiero que haga es subir imagenes. Si consigo que las suba luego yo ya podre redimensionar las imagenes y tal. Pero si no consigo que se suba no puedo continuar. Estoy tomando de ejemplo unas imagenes que tengo en el escritorio que son jpg de 55 kb cada una mas o menos. No creo que ese sea el problema.

Cuando dices que haga un hecho de la variable, a que variable de refieres?
  #10 (permalink)  
Antiguo 04/06/2011, 09:14
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: No me sube imagen

Hola,

Posiblemente porque no estas enviando el archivo,

Cita:
Iniciado por Jota_sk Ver Mensaje
// Enviamos el formulario usando AJAX
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
// Mostramos un mensaje con la respuesta de PHP
success: function(data) {
$('#result').html(data);
}
For a form element's value to be included in the serialized string, the element must have a name attribute. Data from file select elements is not serialized.

http://api.jquery.com/serialize/

Saludos,
  #11 (permalink)  
Antiguo 04/06/2011, 09:14
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: No me sube imagen

a estas

Código PHP:
$tamano $_FILES["archivo"]['size'];
$tipo $_FILES["archivo"]['type'];
$archivo $_FILES["archivo"]['name']; 
Para saber si está obteniendo los valores, si estuvieran vacíos el problema vendría de algo anterior.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #12 (permalink)  
Antiguo 04/06/2011, 09:22
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No me sube imagen

IEKK

Pues si que estan vacias, les acabo de hacer un echo y no me muestra nada.

HackmanC

Y como le podría enviar el archivo? Es que con esto del AJAX soy nuevo en esto y ando un poco perdido la verdad.
  #13 (permalink)  
Antiguo 04/06/2011, 09:24
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: No me sube imagen

Bueno entonces ya sabemos que no es un problema de php sino anterior.
¿Como envías por Ajax? Fíjate en lo que te comentó HackmanC
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #14 (permalink)  
Antiguo 04/06/2011, 09:26
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No me sube imagen

Exactamente no se muy bien como envío por AJAX. El código lo he puesto mas arriba. No se muy bien como solucionar esto, la verdad
  #15 (permalink)  
Antiguo 04/06/2011, 09:31
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: No me sube imagen

Que yo sepa, sigue sin ser posible el envío de archivos mediante ajax.

Creo que lo más cómodo sería que utilizaras algún framework tipo uploadify. O, como idea, podrías hacerlo a través de un iframe que sea el que cargue el archivo sin ajax.

Quizá más fácil con el framework...
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #16 (permalink)  
Antiguo 04/06/2011, 09:35
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: No me sube imagen

Hola,

No creo que exista una forma 'facil' de hacerlo, el POST se puede enviar de varias formas, y normalmente los archivos se mandan como 'multipart', con una codificación bastante compleja. La mayoría de scripts crean un IFRAME invisble donde colocan el formulario a enviar y reciben la respuesta.

Posiblemente te sea de alguna ayuda,

http://www.webdeveloperjuice.com/201...-using-jquery/

Saludos,
  #17 (permalink)  
Antiguo 04/06/2011, 09:38
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: No me sube imagen

hivciste el var_dump() que te indique antes?
  #18 (permalink)  
Antiguo 04/06/2011, 09:46
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No me sube imagen

Si, si que lo hice y he posteado el resultado mar arriba. Os are caso y dejare este codigo e intentare adapatar uno que he encontrado en la web que funciona con iframes como me comentais que ya lo he probado y funciona correctamente.

Os dejo el link por si alguien quiere o le sirve de ayuda. LINK No es SPAM, es por si alguien ha llegado aqui y quiere saber como lo he solucionado
  #19 (permalink)  
Antiguo 04/06/2011, 13:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: No me sube imagen

@Jota_sk: no se puede subir archivos con AJAX, porque javascript no tiene acceso al IO, por lo tanto no podrá leer el archivo, las únicas formas de emularlo es o con un iframe oculto, o usar complementos como adobe flash y tecnologías similares.

cuando envías un formulario por ajax es recomendable prescindir de los input="submit" a no ser que pretendas un POST normal.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: sube
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:47.