Comunidad de diseño web y desarrollo en internet online

No sube las imagenes ni muestra el error ni los enlaces

Citar            
MensajeEscrito el 18 Sep 2009 09:01 pm
Hola a todos, resulta ser de que tengo un problema aquí con un codigo php para alojamiento de imagenes.

El problema es que no me sube las imagenes ni me muestra los enlaces para copiar y pegar, y lo peor de todo es que no muestra error, algo que me desconcierta :ownz:

Mi codigo PHP:

Código PHP :

<form action="" method="post" enctype="multipart/form-data">
<input name="imagen" type="file" size="35" />
<input name="enviar" type="submit" value="Subir Imagen" />
<input name="action" type="hidden" value="upload" />
</form>

<?php
$varrand = substr(md5(uniqid(rand())),0,10) ;
$varallw = array("image/bml", "image/gif", "image/jpge", "image/pjpeg", "image/x-png") ;
$varpath = "http://betaconsolas.com/upload/index.php?image=" ;
$varstat = "" ;

if (is_uploaded_file($_FILES["imagen"]["tmp_name"])) {
$varname = $_FILES["imagen"]['name'] ;
$vartemp = $_FILES['imagen']['tmp_name'] ;
$vartype = mime_content_type($vartemp) ;
if (in_array($vartype, $varallw) && $varname != "") {
$arrname = explode(".", $varname) ;
$varname = $varrand.".".$arrname[1] ;
if (copy($vartemp, "/tmp".$varname)) {
$varpath = $varpath.$varname ;
$varstat = "ok" ;
} else {
$varstat = "Error al subir el archivo" ;
}
} else {
$varstat = "Archivo invalido" ;
}
}
?>

<?php if ($varstat == "ok") {  ?>
<h3 style="font-size: 16px">Confirmación:</h1>
<br />
<p>Imagen subida satisfactoriamente.</p>
<p>Ahora podrás utilizar las siguiente opciones para enlazarlo:</p>
<h4 style="font-size: 14px">Enlace directo</h3>
<input name="txt2" type="text" value="<?php echo $varpath ; ?>">
<img src="tmp/<?php echo $varname ; ?>">
<?php } ?>

<?php if ($_GET['image'] != "") { ?>
<img src="tmp/<?php echo $_GET['image'] ; ?>" >
<?php } ?>
</div>


¿Qué tiene el codigo?

La linea esta:

Código PHP :

<img src="tmp/<?php echo $varname ; ?>">


La he tenido de esa forma y de esta:

Código PHP :

<img src="/tmp<?php echo $varname ; ?>">


Que es en la forma en la que se encuentra ahora mismo.

¿Qué me puede estar pasando?

Saludos

Por Distriker

Claber

955 de clabLevel

9 tutoriales

 

Las Palmas De Gran Canarias

firefox
Citar            
MensajeEscrito el 19 Sep 2009 05:00 am
Lo primero que se me ocurre es que los archivos que intentas subir exceden el límite de tamaño que el servidor permite. Dentro de $_FILES hay un elemento "error" que tiene el número de error, podrías probar viendo si vale algo distinto de cero, eso podría date una idea de si algo está pasando con el servidor.

Por otro lado veo que tienes dos ifs sin else. Prueba poniendo los else y mostrando un mensaje en cada uno, así sabrás si no se está cumpliendo alguna de las condiciones.

Finalmente la función mime_content_type() está obsoleta, mejor usa fileinfo().

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 19 Sep 2009 03:36 pm

DriverOp escribió:

Lo primero que se me ocurre es que los archivos que intentas subir exceden el límite de tamaño que el servidor permite. Dentro de $_FILES hay un elemento "error" que tiene el número de error, podrías probar viendo si vale algo distinto de cero, eso podría date una idea de si algo está pasando con el servidor.

Por otro lado veo que tienes dos ifs sin else. Prueba poniendo los else y mostrando un mensaje en cada uno, así sabrás si no se está cumpliendo alguna de las condiciones.

Finalmente la función mime_content_type() está obsoleta, mejor usa fileinfo().


Veamos, no entiendo mucho lo que me has dicho.

¿A qué elemento error te refieres?

A los Ifs sin else, ¿te refieres a estos dos?

Código PHP :

if (is_uploaded_file($_FILES["imagen"]["tmp_name"])) {
$varname = $_FILES["imagen"]['name'] ;
$vartemp = $_FILES['imagen']['tmp_name'] ;
$vartype = mime_content_type($vartemp) ; 
if (in_array($vartype, $varallw) && $varname != "") {
$arrname = explode(".", $varname) ;
$varname = $varrand.".".$varname[1] ;


¿Quedaría así?

Código PHP :

if (is_uploaded_file($_FILES["imagen"]["tmp_name"])) {
$varname = $_FILES["imagen"]['name'] ;
$vartemp = $_FILES['imagen']['tmp_name'] ;
$vartype = mime_content_type($vartemp) ; 
} else {
if (in_array($vartype, $varallw) && $varname != "") {
$arrname = explode(".", $varname) ;
$varname = $varrand.".".$varname[1] ;
} else {


Sobre lo del fileinfo, pues..., estube mirando en php.net y no lo entendo mucho, ¿podrías explicarmelo?

Saludos

Por Distriker

Claber

955 de clabLevel

9 tutoriales

 

Las Palmas De Gran Canarias

firefox
Citar            
MensajeEscrito el 19 Sep 2009 06:20 pm
No, hombre, no. En tu caso existe un elemento en el array tal como $_FILES["imagen"]["error]" que tiene el número de error, si es cero es que no hay error. Entonces podrías hacer algo como esto:

Código PHP :

if ($_FILES["imagen"]["error"] != 0) { echo "Errores al subir la imagen, el número de error fue: ".$_FILES["imagen"]["error"]; exit; }
if (is_uploaded_file($_FILES["imagen"]["tmp_name"])) { 
$varname = $_FILES["imagen"]['name'] ; 
bla... bla... bla...


Respecto a lo de los ifs y else, en tu código original tienes el primer if, el que evalua is_uploaded_file no tiene if ¿qué pasa cuando esa función devuelve falso?, no haces nada, ni siquiera muestras un mensaje de error, nada. Entonces deberías ponerle un ELSE a ese if donde muestre un mensaje apropiado, como que el archivo no se cargó o algo así.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 20 Sep 2009 02:59 pm
Bueno, por lo que te he entendido, debería de agregar lo que me has comentado, y dejaríe mi code así:

Código PHP :

<form action="" method="post" enctype="multipart/form-data">
<input name="imagen" type="file" size="35" />
<input name="enviar" type="submit" value="Subir Imagen" />
<input name="action" type="hidden" value="upload" />
</form>

<?php
$varrand = substr(md5(uniqid(rand())),0,10) ;
$varallw = array("image/bml", "image/gif", "image/jpge", "image/pjpeg", "image/x-png") ;
$varpath = "http://betaconsolas.com/upload/index.php?image=" ;
$varstat = "" ;

if ($_FILES["imagen"]["error"] != 0) { echo "Errores al subir la imagen, el número de error fue: ".$_FILES["imagen"]["error"]; exit; } 
if (is_uploaded_file($_FILES["imagen"]["tmp_name"])) {
$varname = $_FILES["imagen"]['name'] ;  
$vartemp = $_FILES['imagen']['tmp_name'] ;
$vartype = fileinfo($vartemp) ;
if (in_array($vartype, $varallw) && $varname != "") {
$arrname = explode(".", $varname) ;
$varname = $varrand.".".$varname[1] ;
if (copy($vartemp, "/tmp".$varname)) {
$varpath = $varpath.$varname ;
$varstat = "ok" ;
} else {
$varstat = "Error al subir el archivo" ;
}
} else {
$varstat = "Archivo invalido" ;
}
}
?>

<?php if ($varstat == "ok") {  ?>
<h3 style="font-size: 16px">Confirmación:</h1>
<br />
<p>Imagen subida satisfactoriamente.</p>
<p>Ahora podrás utilizar las siguiente opciones para enlazarlo:</p>
<h4 style="font-size: 14px">Enlace directo</h3>
<input name="txt2" type="text" value="<?php echo $varpath ; ?>">
<img src="tmp/<?php echo $varname ; ?>">
<?php } ?>

<?php if ($_GET['image'] != "") { ?>
<img src="tmp/<?php echo $_GET['image'] ; ?>" >
<?php } ?>


Pero tengo un problema y es que me sale este error:

Código :

Fatal error: Call to undefined function fileinfo() in /home/distriker/domains/betaconsolas.com/public_html
/upload-images/index.php on line 44


Mira, pruebalo tu mismo si quieres.

Creo que esto es debido a que no está configurado el componente fileinfo() en el php de mi servidor, ¿puede ser?

Saludos

Por Distriker

Claber

955 de clabLevel

9 tutoriales

 

Las Palmas De Gran Canarias

firefox
Citar            
MensajeEscrito el 20 Sep 2009 07:02 pm
Muchas gracias DriveOp, ya lo he solucionado todo entre usted y los de Laneros.Com.

Gracias.

Saludos

Por Distriker

Claber

955 de clabLevel

9 tutoriales

 

Las Palmas De Gran Canarias

firefox
Citar            
MensajeEscrito el 20 Sep 2009 07:50 pm

Por scowtmaster

21 de clabLevel



Genero:Masculino  

Rep Dom

firefox
Citar            
MensajeEscrito el 21 Sep 2009 03:41 pm

scowtmaster escribió:

http://foros.cristalab.com/sistema-de-noticias-e-imagen-desde-mysql-t78887/ :lol:


Muchas gracais Scow, pero que creo que ya tengo lo que quiero ;)

Saludos y gracias.

Por Distriker

Claber

955 de clabLevel

9 tutoriales

 

Las Palmas De Gran Canarias

firefox

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.