Foros del Web » Programando para Internet » PHP »

Subir archivos al servidor

Estas en el tema de Subir archivos al servidor en el foro de PHP en Foros del Web. Muy buenas, mi problema es que quiero subir fotos a una carpeta del servidor y no me deja. El log no tira ningun error. Este ...
  #1 (permalink)  
Antiguo 04/07/2009, 20:27
 
Fecha de Ingreso: julio-2009
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 0
Subir archivos al servidor

Muy buenas, mi problema es que quiero subir fotos a una carpeta del servidor y no me deja. El log no tira ningun error. Este es el codigo que tengo :

Código PHP:
if (is_uploaded_file($_FILES['archivo']['tmp_name']) && $_FILES['archivo']['size']>0){
    if(!
move_uploaded_file($_FILES['archivo']['tmp_name'], "imgs/".$_FILES['archivo']['name'])){
        echo 
header("Location:subir_foto.php");        
   }else{
        echo 
"<p>No se pudo mover el archivo. Upload fall&oacute;!</p>";
    }
}else{
        echo 
"<p>No se pudo subir el archivo. Upload fall&oacute;!</p>";

Ya revise varios post sobre el tema y probe con "copy" aparte de "move_uploaded_file".
El servidor es LINUX y la version de PHP es la 4.3.9
El file_uploads esta en "ON"
register_globals en "OFF"
safe_mode "ON"
Tambien cree una carpeta "tmp" en el directorio "httpdocs" por que el "upload_tmp_dir" esta en "NO VALUES".
Prove todos los modos que aconsejan es este post :
ww.forosdelweb.com/f18/subir-archivos-para-e-servidor-285222/
  #2 (permalink)  
Antiguo 04/07/2009, 20:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Subir archivos al servidor

¿La carpeta a la que tratas de subir el archivo tiene los permisos correctos (777)?

Tambien, asegurate que no se te haya olvidado el enctype="multipart/form-data" en la etiqueta de formulario (me ha pasado varias veces).
  #3 (permalink)  
Antiguo 04/07/2009, 20:58
 
Fecha de Ingreso: julio-2009
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Subir archivos al servidor

Cita:
Iniciado por Ronruby Ver Mensaje
¿La carpeta a la que tratas de subir el archivo tiene los permisos correctos (777)?

Tambien, asegurate que no se te haya olvidado el enctype="multipart/form-data" en la etiqueta de formulario (me ha pasado varias veces).
Eso es lo primero que probe y si, la carpeta imgs tiene todos los permisos (rwx --- rwx ).
Perdona se me olvido poner el formulario

Código HTML:
<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="subir_foto2.php">
  <INPUT TYPE="file" NAME="archivo">
     <INPUT TYPE="submit" VALUE="Enviar" name="upload">

</FORM> 
Si hago un echo $_FILES no me da ningun resultado

Última edición por j_mart; 04/07/2009 a las 21:07
  #4 (permalink)  
Antiguo 05/07/2009, 13:38
 
Fecha de Ingreso: julio-2009
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Subir archivos al servidor

Nadie me puede ayudar? La verdad no se cual es el fallo y ya prove todo lo que encontre.
  #5 (permalink)  
Antiguo 05/07/2009, 14:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Subir archivos al servidor

Te dejo este a mi me funciona de 10
El archivo index.php
Cita:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Subir archivos</title>
<link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subir archivos A la base de Datos de mimo </h1>
<br>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<p><b>Campo de tipo texto (completar siempre):</b>
<br>
<input type="text" name="cadenatexto" size="20" maxlength="100">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
</p>
<p>Producto </p>
<p>
<input type="text" name="producto" size="20" maxlength="100">
<br>
<p>Precio </p>
<p>
<input type="text" name="precio" size="20" maxlength="100">
<p>Colores
<p>
<input name="colores" type="text" id="colores" size="20" maxlength="100">
<p>Descripcion

<p>
<input name="descripcion" type="text" id="descripcion" size="20" maxlength="100">
<p>
<p><br>
<p>
<b>Enviar un nuevo archivo: </b>
<br>
<input name="userfile" type="file">
</p>
<p>&nbsp;</p>
<p><br>
<input type="submit" value="Enviar">
</p>
</form>
</body>
</html>
pagina subearchivo.php

Cita:

<?php
mysql_connect("localhost","","");
mysql_select_db("");

echo $_POST['cadenatexto']." Nombres<br>";
if ($_POST['cadenatexto']!='')
{


$path=$dir."/img_productos/";
$path2="img_productos/";
$nombre_archivo = $_FILES['userfile']['name'];
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];
$producto = $_POST['producto'];
$precio = $_POST['precio'];
$colores = $_POST['colores'];
$descripcion = $_POST['descripcion'];
if (!((strpos($nombre_archivo, "doc") || strpos($nombre_archivo, "gif") || strpos($nombre_archivo,"jpg"))))
{
echo "La extensión o el tamaño de los archivos no es correcta";
}
else
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $path2.$_FILES['userfile']['name']))
{
echo
$sql_i = "INSERT INTO tbl (imagen,descripcion,producto,precio,colores) VALUES('".$path2.$_FILES['userfile']['name']."', '".$descripcion."', '".$producto."', '".$precio."', '".$colores."')";
$r = mysql_query($sql_i);

echo "El archivo ha sido cargado correctamente.";
}
else
{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
}
?>
<br>
<br>

<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
  #6 (permalink)  
Antiguo 05/07/2009, 20:57
 
Fecha de Ingreso: julio-2009
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Subir archivos al servidor

Muchas gracias por el codigo Chelo. Yo lo que trato de hacer es subir directamente al directorio "imgs" las fotos. No las guardo en la base de datos (ni el nombre). Y subir un archico .XML al raiz "httpdocs" por que las fotos son para una galeria en flash y recoge los textos de dicho archivo .XML
Creo que es por que el dominio es de prueba y con el sitepreview no funcionan los scripts.
Me explico: Actaulmente quiero cambiar una pagina en .ASP (midominio.com) que evidentemente esta en un servidor windows; a una en .PHP en un linux. Para probar que todo funcione bien antes de estar en red y para que la antigua la siguan viendo los clientes me propusieron en el hosting que contratara el linux añadiendole un numero al final del dominio (midominio1.com). Para visualizarla lo tengo que hacer atraves de una vista previa en el panel plesk del hosting, ya que el dominio no esta registrado. La url seria algo asi:
https://XX.XXX.XX.XXX:8443/sitepreview/http/midominio1.com
¿Es posible que sea por eso que no me funciona la subida de archivos? Por que en local y las pruebas que hice en el servidor windows si funcionaba.
  #7 (permalink)  
Antiguo 05/07/2009, 21:56
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Subir archivos al servidor

Si seguramente es la configuración del hosting, otro fallo común para el upload de archivos, verifica el maximo que tienen para archivos, verifica que no te estés pasando en MB en las imágenes, pues eso no te marca ningún error, simplemente no se suben.

max_upload_size en el php.ini
  #8 (permalink)  
Antiguo 07/07/2009, 05:02
 
Fecha de Ingreso: julio-2009
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Subir archivos al servidor

Cita:
Iniciado por KrowMx Ver Mensaje
Si seguramente es la configuración del hosting, otro fallo común para el upload de archivos, verifica el maximo que tienen para archivos, verifica que no te estés pasando en MB en las imágenes, pues eso no te marca ningún error, simplemente no se suben.

max_upload_size en el php.ini
Al final era que estaba haciendo las pruebas en el sitepreview y ahi solo funciona el HTML, no los scrits del PHP. El codigo esta bien.
¡¡¡¡¡¡Madre que comida de cabeza me pegueeeeeeeeeeeeee!!!!!!!!!!!
De todas formas muchas gracias a todos por la ayuda.
¡ A base de tortas se aprende!
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 12:55.