Foros del Web » Programando para Internet » PHP »

Problema para subir imagen

Estas en el tema de Problema para subir imagen en el foro de PHP en Foros del Web. Amigos Estoy usando este metyodo para subir imagene en una carpeta la acaprta se llama autos y su direccion en servicor es /home/autoya/public_html/panel/autos lo envio ...
  #1 (permalink)  
Antiguo 16/11/2005, 15:43
 
Fecha de Ingreso: enero-2003
Mensajes: 516
Antigüedad: 21 años, 3 meses
Puntos: 0
Problema para subir imagen

Amigos
Estoy usando este metyodo para subir imagene en una carpeta la acaprta se llama autos
y su direccion en servicor es
/home/autoya/public_html/panel/autos

lo envio desde un fomulario
Código PHP:
<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="p2.php">
<
TABLE BORDER=0 ALIGN="CENTER">
<
TR>
<
TD>Archivo a Adjuntar:</TD>
<
TD><INPUT TYPE="file" NAME="archivo"></TD>
</
TR>
</
TABLE>
<
div align="center">
  <
INPUT TYPE="submit" VALUE="Enviar" name="upload">
</
div>
</
FORM
a este otro q lo procede y lo debe subir(estos 2 archivos estan en la carpeta panel como la carpta de autos donde deben subirse la imagen)
Código PHP:
<?php 
// In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
   
copy($HTTP_POST_FILES['archivo']['tmp_name'],"/autos");
} else {
   echo 
"Possible file upload attack. Filename: " .$HTTP_POST_FILES['archivo']['name'];
}
/* ...or... */
move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'],"/autos");
?>
pero me sale este error


Warning: copy(/autos): failed to open stream: Permission denied in /home/autoya/public_html/panel/p2.php on line 4

Warning: move_uploaded_file(/autos): failed to open stream: Permission denied in /home/autoya/public_html/panel/p2.php on line 9

Warning: move_uploaded_file(): Unable to move '/tmp/phpsN8kAw' to '/autos' in /home/autoya/public_html/panel/p2.php on line 9


Y EN LA CARPTA AUTOS LE HE DADO PERMISO 777
PUEDEN AYUDARME PORFA
GRACIAS
__________________
El PISCO SOLO PUEDE SER PERUANO....SALUD!
  #2 (permalink)  
Antiguo 16/11/2005, 15:59
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Yo le doy 757 a todos mis carpetas donde subo cualkier tipo de archivos
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #3 (permalink)  
Antiguo 16/11/2005, 16:31
 
Fecha de Ingreso: enero-2003
Mensajes: 516
Antigüedad: 21 años, 3 meses
Puntos: 0
La di los permisos 757 y me sale

Warning: copy(autos/): failed to open stream: Is a directory in /home/autoya/public_html/panel/p2.php on line 4

Warning: move_uploaded_file(autos/): failed to open stream: Is a directory in /home/autoya/public_html/panel/p2.php on line 9

Warning: move_uploaded_file(): Unable to move '/tmp/phpIMpI20' to 'autos/' in /home/autoya/public_html/panel/p2.php on line 9
__________________
El PISCO SOLO PUEDE SER PERUANO....SALUD!
  #4 (permalink)  
Antiguo 17/11/2005, 01:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
No debes usar copy() y move_uploaded_file() juntos... Ese es el ejemplo que vienen en php.net si no mal lo identifico, lee bien cómo dice "/* ...or... */ ". Depende de la versión, configuración y permisos el que uses copy() ó move_uploaded_file(). Hoy por hoy es recomendable usar la segunda función...

Además según la ruta que colocas cómo parámetro indicas que el archivo ha de colocarse dentro de una carpeta "autos" que está en la raíz de tu DD y qué estás trabajando con un SO GNU/LINUX... manejo del SO --tema aparte-- pero dudo sea lo que buscas.

Supongo que quisiste emplear una ruta relativa. Guardar tu archivo en una carpeta "autos" que esta dentro de la carpeta donde se ejecuta tu archivo. En ese caso la ruta debería ser "autos/".

Por favor consulta las FAQ. La #12 trata del upload de archivos. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 17/11/2005, 01:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
El segundo parámetro de copy(), debe ser la ruta, hasta el nombre con el que quieres que se copie el fichero.

['tmp_name'] es, precisamente, un nombre temporal, que notiene nada que ver con el nombre original.
['name'] es el nombre original del archivo. Aprovecha esto para nombrarlo.

También sería buena idea que utilice el superglobal $_FILES, en lugar de $HTTP_POST_FILES.

El copy podría quedar así:
Código PHP:
copy($_FILES['archivo']['tmp_name'],"autos/".$_FILES['archivo']['name']); 
Ah... y, como dijo jam, no pongas "/autos", sino simplemente "autos/", porque si no buscará desde la raíz (y la carpeta /autos no existe). Por eso te da el error.

Saludos
  #6 (permalink)  
Antiguo 17/11/2005, 02:04
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
no pongas "/autos", sino simplemente "autos/", porque si no buscará desde la raíz
Es un Sistema Operativo GNU/LINUX. En Windows sería "C:\autos".

¿no estámos de acuerdo en no usar copy() sino move_uploaded_file()?; si se tiene activado safe_mode no le servirá copy()...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 17/11/2005, 04:25
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Cita:
Iniciado por jam1138
Es un Sistema Operativo GNU/LINUX. En Windows sería "C:\autos".
Sabemos que para el caso planteado, estamos en un servidor sobre Linux. Además, en Windows, también se interpretará como raíz y dará error.

Cita:
Iniciado por jam1138
¿no estámos de acuerdo en no usar copy() sino move_uploaded_file()?; si se tiene activado safe_mode no le servirá copy()...
Ok jam, el tema no era tanto qué función utilizar. Sino que el segundo parámetro debe contener no sólo la carpeta, sino también el nombre del archivo.
Código PHP:
if (is_uploaded_file($_FILES['archivo']['tmp_name']) && $_FILES['archivo']['size']>0){
    if(
move_uploaded_file($_FILES['archivo']['tmp_name'], "autos/".$_FILES['archivo']['name'])){
        echo 
"<p>Upload correcto!</p>";        
    }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>";

Saludos

Última edición por jpinedo; 17/11/2005 a las 04:33
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 18:51.