Foros del Web » Programando para Internet » PHP »

Duda con Upload de ficheros

Estas en el tema de Duda con Upload de ficheros en el foro de PHP en Foros del Web. Porque no me mueve los ficheros al directorio. Este es el cdigo: Cdigo PHP: <?php   for( $i = 0 ; $i < $cant ; ...

  #1 (permalink)  
Antiguo 13/04/2004, 15:11
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Duda con Upload de ficheros

Porque no me mueve los ficheros al directorio. Este es el cdigo:
Cdigo PHP:
<?php
 
for($i=0;$i<$cant;$i++){
  
$tempdir "marxismo/files/";
  
$tmpname tempnam ($tempdir"reynier");
  @
chmod($tempdir,0777);
  
$var move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"][$i], $tmpname);
  if(
$var)
   echo 
"OK";
  else
   echo 
"False";
 }
?>
el form de donde vienen las variables es el siguiente:
Cdigo PHP:
echo "<form action='upload.php' enctype='multipart/form-data' method='post' name='filesadmin' id='filesadmin'>
                 <table width='300' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#98AAB1'>
                 <tr bgcolor='#BFCFE0'>
                 <td colspan='2' class='menutop'>Cantidad de ficheros a subir </td>
                 </tr>"
;
                 for(
$i=0;$i<$HTTP_POST_VARS['cantidad'];$i++){
                  echo 
"
                  <tr class='txtrg'>
                  <td width='325'>Fichero No. "
.$i.": </td>
                  <td width='169' class='txt'>
                  <input name='file[$i]' type='file' id='file[$i]'>
                  <input name='cant' type='hidden' id='cant' value='"
.$HTTP_POST_VARS['cantidad']."'>
                  </td>
                  </tr>"
;
                 }
           echo 
"<tr>
                 <td colspan='2'><div align='center'>
                 <input name='next' type='submit' class='txtcn' id='next' value='Siguiente &gt;&gt;'>
                 </div></td>
                 </tr>
                 </table>
                 </form>"

Salu2
__________________
Ing. Reynier Prez Mira
  #2 (permalink)  
Antiguo 13/04/2004, 15:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Cuando algo no te funcione ... empieza por quitar los @ de las funciones. Todo esto es para localizar mensajes de error si se estn provocando pero tu no los ves nunca sabras por donde fallan tus aplicaciones. NO uses @ en fase de desarrollo .. ya se los pondrs cuando des por terminado el script y veas que funciona.

Por lo dems .. haz echo a tus variables:
$HTTP_POST_FILES["file"]["tmp_name"][$i]

observa si tiene el valor esperado ..

En fin ... intenta localizar el problema viendo hasta donde se ejecuta tu script con los valores esperados.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #3 (permalink)  
Antiguo 13/04/2004, 19:51
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Mira Clsuter

he hecho lo que me dijiste pero me pone esto que no se que rayo es:
Cita:
C:\WINDOWS\TEMP\php3FF.tmp OK
C:\WINDOWS\TEMP\php400.tmp OK
C:\WINDOWS\TEMP\php401.tmp OK
el cdigo es este:
Cdigo PHP:
for($i=0;$i<$cant;$i++){
  
$tempdir "marxismo/files/";
  
$tmpname tempnam ($tempdir"reynier");
  echo 
$HTTP_POST_FILES['file']['tmp_name'][$i]."<br>";
  
$var move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'][$i], $tmpname);
  if(
$var)
   echo 
"OK";
  else
   echo 
"False";
 } 
Salu2
__________________
Ing. Reynier Prez Mira
  #4 (permalink)  
Antiguo 14/04/2004, 07:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Pues segn eso .. te est diciendo el nombre temporal que le d PHP al archivo que subes y ademas que se aplic correctamente la funcin move_uploaded_file() (por qu devuelve un True si pudo realizar la accin ..)

As que .. mira en el directorio donde mueves los archivos con dicha funcin por qu ah deberas tener tus archivos .. En tu ltimo ejemplo se supone que ese directorio que indicas est creado y con permisos de escritura (CHMOD 0777 o algo menos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #5 (permalink)  
Antiguo 20/04/2004, 21:54
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Cluster de nuevo por aqu

Cluster ya no se que rayos hacer. Mira he cambiado todo el cdigo. Ahora me ha quedado as:
Cdigo PHP:
 //index.html desde aqui digo la cantidad de archivos a subir
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html>
<
head>
<
META HTTP-EQUIV="Expires" CONTENT="Fri, Jan 01 1900 00:00:00 GMT">
<
META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<
META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<
META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
META http-equiv="content-language" content="en">
<
META name="author" content="">
<
META HTTP-EQUIV="Reply-to" CONTENT="@.com">
<
META name="generator" content="PHPEd 3.1">
<
META NAME="description" CONTENT="">
<
META name="keywords" content="">
<
META NAME="Creation_Date" CONTENT="08/15/2000">
<
META name="revisit-after" content="15 days">
<
title>Untitled</title>
<
link rel="stylesheet" type="text/css" href="my.css">
</
head>
<
body>
 <
FORM  action="2do.php" method="POST" name="upload" enctype="multipart/form-data" title="upload">
  <
INPUT TYPE="TEXT"  name="cantidad" align="right" size="5" maxlength="5"   title="cantidad">
  <
INPUT TYPE="SUBMIT"  name="envia" value="Siguiente >>">
 </
FORM>
</
body>
</
html
2do.php
aqui imprimo tantos input como haya especificado antes:
Cdigo PHP:
 <?php
 printf
("<FORM  action=3ro.php method=POST name=action enctype=multipart/form-data>");
 
printf("<INPUT TYPE=HIDDEN  name=cantidad value=".$_POST['cantidad'].">");
 for(
$i=0;$i<$_POST['cantidad'];$i++){
  
printf("<INPUT TYPE=file  name=file[$i]><br>");
 }
 
printf("<INPUT TYPE=SUBMIT  name=envia value=Enviar>");
 
printf("</FORM>");
?>
3ro.php aqui hago el upload de ficheros
Cdigo PHP:
 <?php
 
for($i=0;$i<$_POST['cantidad'];$i++){
  
$tmpdir "upload/";
  
//$tmpname = $tmpname($tmpdir,"tmp");
  
$bool move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'][$i], $tmpdir);
 }
 if(
$bool){
  
printf("OK");
 }else{
  
printf("No OK");
 }
?>
Lo mas lindo es que me pone OK, (algo as como que los subio) pero cuando voy al directorio upload lo que tengo es esto:
un archivo llamado upload que no tiene extensin cuyo contenido es esto:
Cita:
GIF89a  !  ,  ')@`q>LmQ ;
que no se que es eso, porque en ningn moment escribo nada en ficheros.
Los archivos que sub fueron estos:
D:\MyDocumentation\Duda con Upload de ficheros - Foros del Web_files\scratchchin.gif
D:\MyDocumentation\Duda con Upload de ficheros - Foros del Web_files\right_bottom.gif
D:\MyDocumentation\Duda con Upload de ficheros - Foros del Web_files\prev.gif

Salu2
PD: Si pueden ayudenme pues esto es bsico para el Sistema de Portal que estoy realizando pues es para una escuela y debe dar la facilidad a los profesores de subir las conferencias que pueden ser .doc y .ppt o .pps de las clases.
__________________
Ing. Reynier Prez Mira
  #6 (permalink)  
Antiguo 20/04/2004, 22:08
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicacin: Medellin-Colombia
Mensajes: 1.109
Antigedad: 14 aos, 8 meses
Puntos: 24
Solo una sugerencia

jeje no he leido todos lso codigos... ustedes sabran disculparme, ahora bien mi recomendacin es que no lo hagas asi, es decir que lo ahgas con funciones de FTP, es facil de utilizar el codigo es el doble de sencillo ademas de que lo hace mucho mas rapido (la diferencia se nota con archivos grandes) y adems no ocupa espacio en los temporales (aunque no se para que mas puedan servir!!!)lo unico malo es que los servidorescolovan un limite al tamao del archivo.. como 2 MB....
beuno hastapronto!!!
__________________
SEO en Medellin
  #7 (permalink)  
Antiguo 20/04/2004, 22:10
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Ahora he probado con este otro y nada

Cdigo PHP:
 <?php
$uploaddir 
'upload/';
chmod($uploaddir,777);
$uploadfile $uploaddir$_FILES['userfile']['name'];
print 
"<pre>";
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   print 
"File is valid, and was successfully uploaded. ";
   print 
"Here's some more debugging info:\n";
   
print_r($_FILES);
} else {
   print 
"Possible file upload attack!  Here's some debugging info:\n";
   
print_r($_FILES);
}
print 
"</pre>";
?>
Me da estos errores
Cita:
Warning: chmod(): No such file or directory in c:\program files\apache group\apache\htdocs\upload\4to.php on line 3


Warning: move_uploaded_file(upload/header_ayuda.gif): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\upload\4to.php on line 6

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php122.tmp' to 'upload/header_ayuda.gif' in c:\program files\apache group\apache\htdocs\upload\4to.php on line 6
Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => header_ayuda.gif
[type] => image/gif
[tmp_name] => C:\WINDOWS\TEMP\php122.tmp
[error] => 0
[size] => 141
)

)
Nota: Estoy trabajando en Win2003 Server Enterprise Edition, Apache/1.3.24, PHP 4.3.2 y MySQL 4.0.18

Salu2
__________________
Ing. Reynier Prez Mira

ltima edicin por Reynier; 20/04/2004 a las 22:12
  #8 (permalink)  
Antiguo 21/04/2004, 07:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Reynier . tu problema principal era que no le ests dando nombre al archivo que mueves con move_uploaded_file() ..

Adems de la ruta has de decirle el nombre del archivo
$tmpdir = "upload/";

Por ejemplo:

Cdigo PHP:
  $tmpdir "upload/";
  
//$tmpname = $tmpname($tmpdir,"tmp");
  
$bool =  move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'][$i], $tmpdir.$HTTP_POST_FILES['file']['name'][$i]); 
(usalo en el anterior ejemplo que pusistes que te funcionaba con ese archivo que se crea sin extensin ... y esos problemas q tenas).



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #9 (permalink)  
Antiguo 21/04/2004, 07:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Re: Solo una sugerencia

Cita:
Mensaje Original por mafima
jeje no he leido todos lso codigos... ustedes sabran disculparme, ahora bien mi recomendacin es que no lo hagas asi, es decir que lo ahgas con funciones de FTP, es facil de utilizar el codigo es el doble de sencillo ademas de que lo hace mucho mas rapido (la diferencia se nota con archivos grandes) y adems no ocupa espacio en los temporales (aunque no se para que mas puedan servir!!!)lo unico malo es que los servidorescolovan un limite al tamao del archivo.. como 2 MB....
beuno hastapronto!!!
Las funciones de FTP te permiten conectarte a un servidor FTP y mover/copiar .. etc .. archivos en ese servidor. OK?

Ahora .. si yo tengo mi archivito a subir al servidor en mi PC (cliente) y deseo subir un archivo al servidor por HTTP (por una pgina web para que mis usuarios suban fotos/archivos en general sin que tengan que usar un cliente FTP o por qu simplemente a ese archivo le asocio otros datos y debo guardar en mi BD o donde sea ...).

Como aplicas funciones de FTP para subir mi archivo de mi PC (clienet) al servidor ?

Es decir (a lo que quiero llegar) ..
El "Upload" se har va PHP por HTTP con las limitaciones de la configuracin de PHP (php.ini) al respecto. Una vez que sube el archivo (que queda en ese directorio temporal que se mencion: donde diga upload_tmp_dir por si ascaso ..) se debe -mover- hacia su destino definitivo. Si es en el mismo servidor, un "move_uploaded_file()" es lo ms seguro y rpido. Una conexin por FTP al mismo servidor que ejecuta PHP y que es donde quedarn los archivos tendr un tiempo ms extra de conexin y negociacin de la autentificacin del usuario FTP que se va a usar adems que requiere de un servidor FTP habilitado (cuando podra ser opcional). Ahora, si el archivo se va a mover a otro servidor distinto al que lo subi (el archivo) .. OK, usa FTP sin problemas para moverlo de forma segura a donde corresponda.

Un saludo,
  #10 (permalink)  
Antiguo 21/04/2004, 08:20
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Chicos ...

Chicos:
Muy buena sus respuestas pero no entend nada. Lo que quiero hacer es subir los archivos a un servidor remoto, es decir, donde est publicada mi web, desde cualquier otra PC conectada a la red. Me podan explicar un poco mejor ?
Salu2
__________________
Ing. Reynier Prez Mira
  #11 (permalink)  
Antiguo 21/04/2004, 08:33
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Cluster de nuevo por aqu

Me sigue dando el mismo error:
Cita:
Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => 1082320851.jpg
[type] => image/pjpeg
[tmp_name] => C:\WINDOWS\TEMP\php16C.tmp
[error] => 0
[size] => 27359
)

)
El codigo es este:
Cdigo PHP:
 <?php
$uploaddir 
"upload/";
print 
"<pre>";
if (
move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'], $uploaddir.$HTTP_POST_FILES['file']['name'])) {
   print 
"File is valid, and was successfully uploaded. ";
   print 
"Here's some more debugging info:\n";
   
print_r($_FILES);
} else {
   print 
"Possible file upload attack!  Here's some debugging info:\n";
   
print_r($_FILES);
}
print 
"</pre>";
?>
Salu2

PD: A y me sigue creando el fichero sin extensin con el contenido en caracteres extraos, algo como esto:
Cita:
JFIF  H H C 




   C  

 ^^"    
  } !1AQa"q2#BR$3br
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz   
  w !1AQaq"2B #3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvw xyz   ? ?=/OlM,JE+ ♁텬o)Hⲹ\0JHE4>jr>_ ⊩Sg?ݧAvv .O- 9#ҽVy/#uh{xww9^bV
Ɵ3%X>"}VOoJeBt4rDz4 !gڵ
~Sǥrڈjsӊ9#
7J]۲gV㜝ӊ_ =*P1S/gl|o!\n1,>5_# 6HSC/!vs^
K_O{;=q%9[K|t̀r/ZħO̧d
3N6s7Ͷ4΂?'>)ڿo[aOfZW95~wѓ8\膥.$M/U6O2ӎĒ38X4dFv
/5'vbͻގU gjL^e⟎OMaU&4,N*% gpԓ:~?RUoIjs6FN+灓p_+0t `1\0qg|44l  <KpH_'H|C+ӑ^K*
P' ̿v:U~Iq&۴7;GA_9#@b kiZsOzhI(J:{@Y+4į ;{@sޤwOu9/%lğIk
K !%ic Uf 7-P
ecǚ[$_0k lj5E{]ڱD& V| >,%|P\_^kϏ+Cq{_Fׄ2 |?t+$W|H_sfMkF]3e ks~~4rɤvϷF8k? ގ)oY\c5suqcw3FTF*1_xVsò \^Df"}?A\Ӄ4^WW:_wx b>(xO U#ѕ ;__ZExN}A=OO6̥ i|㹬=U_+?2ǍF5XJ?mxcc& ݵ1%`ׂ1IU8(hQu#ߍ@^ _e)>vpi ,Ur_r}:g<׬~?<W_JJFPIx5 \Gk]ׯRG+l(955* >. .\
Cş4<!Ϯ6iRv=+=N/Eg
!G{{Imf~T5j_J $wD<{Ս++z~i]y_hALwA WaTZ60$ZmbDvޮ_((r[vvl8i`9 w)@)__m uuab $XS1_K-̬I˹&x ׽Yϲm܃O_vå@ZB c8C[+\
:sLO[Jlh_=+V%ؖ!֦yjr-򃶞j+V;|/0(Eg(81 (Gj{\1` fCLbm.% Տ $r1
el archivo subido es este:
C:\Documents and Settings\Administrator\My Documents\My Pictures\1082320851.jpg
__________________
Ing. Reynier Prez Mira
  #12 (permalink)  
Antiguo 21/04/2004, 09:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Te dije que usases el cdigo que no te daba esos erroes (no el ltimo que pusistes).

En tu ltimo ejemplo .. fijate que ests menzclando cosas ..

por un lado haces todo con $HTTP_POST_FILES y luego ves lo que viaj en $_FILES (que al parecer es correcto) .. Entonces por qu no usas lo mismo para todo?: .. $_FILES

otro detalle .. fijate:

en $_FILES tienes "userfile" y luego accedes en $HTTP_POST_FILES a "file"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.

ltima edicin por Cluster; 21/04/2004 a las 09:43
  #13 (permalink)  
Antiguo 21/04/2004, 10:48
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Nada

Lo he hecho como me dijiste y me da estos errores:
Cita:
Warning: move_uploaded_file(upload/lapiz.gif): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\upload\3ro.php on line 4

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php189.tmp' to 'upload/lapiz.gif' in c:\program files\apache group\apache\htdocs\upload\3ro.php on line 4

Warning: move_uploaded_file(upload/1082320851.jpg): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\upload\3ro.php on line 4

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php18A.tmp' to 'upload/1082320851.jpg' in c:\program files\apache group\apache\htdocs\upload\3ro.php on line 4
No OK
El cdigo de index.html y 2do.php se mantienen iguales. Por eso no los pongo. El de 3ro.php lo cambi por este:
3ro.php
Cdigo PHP:
<?php
 $tmpdir 
"upload/";
 for(
$i=0;$i<$_POST['cantidad'];$i++){
  
$bool move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'][$i], $tmpdir.$HTTP_POST_FILES['file']['name'][$i]);
 }
 if(
$bool){
  
printf("OK");
 }else{
  
printf("No OK");
 }
?>
Salu2
__________________
Ing. Reynier Prez Mira
  #14 (permalink)  
Antiguo 21/04/2004, 12:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Te coment tambin que uses $_FILES en lugar de $HTTP_POST_FILES .. ms que nada por qu no s como usas "register_gloabals" y por qu es ms seguro acceder a archivos que subes por HTTP as.

Y por favor .. aclarate con el cdigo que usas . .has cambiado como 4 veces de cdigo (yo por lo menos ya no s que es el 1 o el 2 o al cdigo que haces referencia) ... todos con sus errores prpios. As que es imposible recomendar nada, por qu cuando se te recomiendan algo ya has probado otra cosa y llegas con otro problema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #15 (permalink)  
Antiguo 21/04/2004, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Asegurate tambin que los permisos de lectura/escritura del directorio destino tengan permisos para eso.

Si usas windows XP pro o 2000, 2003 debes revisarlo, sino PHP no podr copiar el archivo all o moverlo desde su origen.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #16 (permalink)  
Antiguo 21/04/2004, 12:27
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Disculpa Cluster

Clsuter disculpa si cambio tanto el cdigo pero es que estoy buscando alternativas a ver si resuelvo el problema. El register_globals mo est en ON y el del server donde voy a publicar la pgina tambin. Ahora el cdigo ltimo que prob es este:
Este es el index.html. Aqu digo la cantidad de ficheros que quiero subir.
Cdigo PHP:
<html>
<
head>
<
title>Untitled</title>
</
head>
<
body>
 <
FORM  action="2do.php" method="POST" name="upload" enctype="multipart/form-data" title="upload">
  <
INPUT TYPE="TEXT"  name="cantidad" align="right" size="5" maxlength="5"   title="cantidad">
  <
INPUT TYPE="SUBMIT"  name="envia" value="Siguiente >>">
 </
FORM>
</
body>
</
html
Luego va el 2do.php. Este lo que me hace es imprimirme tantos input como haya especificado antes en la cantidad de archivos a subir.
Cdigo PHP:
 <?php
 printf
("<FORM  action=3ro.php method=POST name=action enctype=multipart/form-data>");
 
printf("<INPUT TYPE=HIDDEN  name=cantidad value=".$_POST['cantidad'].">");
 for(
$i=0;$i<$_POST['cantidad'];$i++){
  
printf("<INPUT TYPE=file  name=file[$i]><br>");
 }
 
printf("<INPUT TYPE=SUBMIT  name=envia value=Enviar>");
 
printf("</FORM>");
?>
Luego el 3ro.php. Este es el que se encarga de hacer el upload de los ficheros.
Cdigo PHP:
 <?php
 $tmpdir 
"upload/";
 for(
$i=0;$i<$_POST['cantidad'];$i++){
  
$bool move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'][$i], $tmpdir.$HTTP_POST_FILES['file']['name'][$i]);
 }
 if(
$bool){
  
printf("OK");
 }else{
  
printf("No OK");
 }
?>
Ah !! Lo del directorio no se que permisos son los que debo de dar ni como darlos.

Salu2
__________________
Ing. Reynier Prez Mira
  #17 (permalink)  
Antiguo 21/04/2004, 12:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Cita:
Ah !! Lo del directorio no se que permisos son los que debo de dar ni como darlos.
Eso depende del Sistema Operativo que uses .. En tu servidor remoto lo puedes hacer con tu cliente de FTP con el comando o botn CHMOD dandole permisos de escritura (0666 o similar) al directorio "uploads/" ..

En Windows .. depende .. slo en Windows XP PRO, 2000 y 2003 puedes dar permisos a usuarios/archivos .. En W9x tan slo no hay que hacer nada (por defecto est como escritura salvo que edites las propiedades de ese directorio y le des otras ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #18 (permalink)  
Antiguo 21/04/2004, 15:09
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Pero a quien

Clsuter no se a quien le debo dar los permisos, pues esa carpeta est en Archivos de Programas por lo que tiene permisos de escritura/lectura. Estoy trabajando con Windows2003 Server.

Salu2
__________________
Ing. Reynier Prez Mira
  #19 (permalink)  
Antiguo 21/04/2004, 15:40
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicacin: La Paz - Bolivia
Mensajes: 2.003
Antigedad: 14 aos, 7 meses
Puntos: 35
loading......




porque no solo usas la funcion copy?



connection closed.
__________________

Maborak Technologies
  #20 (permalink)  
Antiguo 21/04/2004, 15:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
MaBoRaK

En principio .. copy(), fopen() .. y move_uploaded_file() pueden servir para el mismo propsito: mover un archivo de un directorio a otro ..

pero justamente "move_uploaded_file()" tiene permisos para mover archivos slo dese donde PHP indica que los sube (en su uplad_tmp_dir ..) incluso bajo configuraciones "safe mode" que son altamente restricctivas con el archivo y donde se hubique para copiarlo. (ademas .. mueve el archivo y parece que lo borra del temporal .. as que no has de preocuparte de andar borrando luego ese directorio de archivos que ya tendrs en otro sitio del servidor ..)

----

Reynier ..
No conozco Windows 2003 Server a fondo .. pero tan slo posicionate en el directorio "upload" y mira a ver si le sacas las propiedades. Si habla algo del tema lo ajustas. (o preguntas en el foro de S.O.: Windows)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #21 (permalink)  
Antiguo 21/04/2004, 19:55
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicacin: Medellin-Colombia
Mensajes: 1.109
Antigedad: 14 aos, 8 meses
Puntos: 24
Huy exelente ese aporte

cluster, exelente eseaporte de las funciones fopen, copy etc

pero hay algo que no te entendi... acerca de las funciones FTP...
entiendo que dices que es mas lenta en cuanto a que tiene que negociar la autentificacin, pero no entiendo por que dices que es mas recomendable utilizar la fucnion move_upload_file cuando se trata de mover archivos del clinte al servidor...
bueno, pero no pretendo robarle el header a nuestro compaero, sin embargo quedo con la duda, ahora mismo voy abrir un nuevo tema que trate sobre esto, CLUSTER espero tu participacin esn este tema.
HASTA PRONTO
__________________
SEO en Medellin
  #22 (permalink)  
Antiguo 22/04/2004, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Te contesto a esas preguntas en el tema nuevo que abristes,
para no mezclar temas. El que desee seguir la conversacin puede hacerlo en:

http://www.forosdelweb.com/s/msg197301.html

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #23 (permalink)  
Antiguo 22/04/2004, 12:29
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
nada Cluster

Cluster y otros:
Me van a tener que disculpar pero esto no me da resultados. He probado ahora con una nueva variante de cdigo y me sigue dando errores:
Cdigo PHP:
<?
          
if(!isset($phase)){
           echo 
"<form action='uploadadmin.php?action=admin&type=".$HTTP_COOKIE_VARS['usertype']."&ses=".$HTTP_COOKIE_VARS['sessionid']."&phase=second' method='post' name='filesadmin' id='filesadmin'>
                 <table width='300' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#98AAB1'>
                 <tr bgcolor='#BFCFE0'>
                 <td colspan='2' class='menutop'>Cantidad de ficheros a subir </td>
                 </tr>
                 <tr class='txtrg'>
                 <td width='325'>Cantidad de Ficheros a subir: </td>
                 <td width='169' class='txt'><input name='cantidad' type='text' id='cantidad' size='5' maxlength='5'></td>
                 </tr>
                 <tr>
                 <td colspan='2'><div align='center'>
                 <input name='next' type='submit' class='txtcn' id='next' value='Siguiente &gt;&gt;'>
                 </div></td>
                 </tr>
                 </table>
                 </form>"
;
          }elseif((isset(
$phase))&&($phase=="second")){
           echo 
"<form action='upload.php?action=admin&type=".$HTTP_COOKIE_VARS['usertype']."&ses=".$HTTP_COOKIE_VARS['sessionid']."&phase=upload' enctype='multipart/form-data' method='post' name='filesadmin' id='filesadmin'>
                 <table width='300' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#98AAB1'>
                 <tr bgcolor='#BFCFE0'>
                 <td colspan='2' class='menutop'>Cantidad de ficheros a subir </td>
                 </tr>"
;
                 for(
$i=0;$i<$_POST['cantidad'];$i++){
                  echo 
"
                  <tr class='txtrg'>
                  <td width='325'>Fichero No. "
.$i.": </td>
                  <td width='169' class='txt'>
                  <input name='file[$i]' type='file' id='file[$i]'>
                  <input name='cant' type='hidden' id='cant' value='"
.$_POST['cantidad']."'>
                  </td>
                  </tr>"
;
                 }
           echo 
"<tr>
                 <td colspan='2'><div align='center'>
                 <input name='next' type='submit' class='txtcn' id='next' value='Siguiente &gt;&gt;'>
                 </div></td>
                 </tr>
                 </table>
                 </form>"
;
          }
          
?>
y el fichero upload.php es este:
Cdigo PHP:
 <?php
 $newdir 
mkdir("files",0777);
 
$tmpdir "marxismo/".$newdir;
 if((isset(
$_GET['action']))&&($_GET['action']=="admin")){
  if((isset(
$_GET['phase']))&&($_GET['phase']=="upload")){
   for(
$i=0;$i<$_POST['cant'];$i++){
     
$dir $tmpdir."/".$_FILES['file']['name'][$i];
     
$bool move_uploaded_file($_FILES['file']['tmp_name'][$i], $dir);
     if(
$bool)
      echo 
"OK";
     else
      echo 
"Pepe";
   }
  }
 }
?>
me da este error:
Cita:

Warning: move_uploaded_file(marxismo/1/1082320851.jpg): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\marxismo\upload.php on line 8

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\phpF4.tmp' to 'marxismo/1/1082320851.jpg' in c:\program files\apache group\apache\htdocs\marxismo\upload.php on line 8
Pepe
Warning: move_uploaded_file(marxismo/1/connected_multiple_big.jpg): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\marxismo\upload.php on line 8

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\phpF5.tmp' to 'marxismo/1/connected_multiple_big.jpg' in c:\program files\apache group\apache\htdocs\marxismo\upload.php on line 8
Pepe
Salu2
__________________
Ing. Reynier Prez Mira
  #24 (permalink)  
Antiguo 23/04/2004, 07:36
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Nada

Sigue sin funcionarme. Alguna idea de si es problema de mi cdigo o de mi PC?
Salu2
__________________
Ing. Reynier Prez Mira
  #25 (permalink)  
Antiguo 23/04/2004, 08:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Pero .. revisastes todo el tema de permisos en tu Windows 2003?

que permisos tiene tu?:

c:\windows\temp

(por cierto .. que valor tiene tu: upload_tmp_dir ? .. podras subir tus archivos a otro sitio (directorio) as controlas esos archivos de forma independiente y fuera de directorios de sistema ..)

Esto de aqui ...
$newdir = mkdir("files",0777);

No tendras que hacerlo cada vez que subes un archivo .. con una vez sobra. Es ms .. eso (si corresponde) lo haras por FTP (con CHMOD si usas un servicio de hosting) o por las propiedades de tus directorios o control de permisos de tu Sistema Operativo.

Tambin revisa los permisos de:
"marxismo/"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #26 (permalink)  
Antiguo 23/04/2004, 10:01
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Nada

En realidad ya no se que hacer. Debo presentar el Portal maana en un Forum Cientfico y lo ms importante que considera mi tutor no lo he logrado hacer que es upload de archivos. Cluster he puesto todos los permisos a la carpeta marxismo completa (es decir lo que en Linux sera 777) y a C:\ que es el valor que le he puesto a mi upload_temp_dir y nada me sigue dando errores. Que hago? Please?

__________________
Ing. Reynier Prez Mira
  #27 (permalink)  
Antiguo 23/04/2004, 10:31
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Mira lo que descubr

Cluster:
Me he puesto a correr el cdigo paso a paso con el NuSphere y mirando los valores que toman las variables y me he topado con que mi upload_etmp_dir es este:
Cita:
"C:\\DOCUME~1\\ADMINI~2\\LOCALS~1\\Temp\\php8E.tmp "
sin embargo en mi php.ini lo tengo en "C:\"

Que puede ser eso?
__________________
Ing. Reynier Prez Mira
  #28 (permalink)  
Antiguo 23/04/2004, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Pues esa es la ruta donde "al parecer" sube tu archivo:

Que valor tiene tu directiva php.ini:
upload_tmp_dir

Indica ah una ruta conocida con permisos de escritura/lectura

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
  #29 (permalink)  
Antiguo 23/04/2004, 11:06
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 15 aos
Puntos: 1
Lo que tiene es esto

Mi php.ini tiene upload_temp_dir en C:\\ dionde tiene persmisos R/W

Salu2
__________________
Ing. Reynier Prez Mira
  #30 (permalink)  
Antiguo 23/04/2004, 11:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 15 aos, 11 meses
Puntos: 126
Yo usara cualquier otro directorio .. create uno desde el raiz y dale permisos correspondientes tipo:

c:\uploads

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos aos. Igualmente los seguir leyendo.
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms 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 17:04.