Foros del Web » Programando para Internet » PHP »

Por que me da este error?

Estas en el tema de Por que me da este error? en el foro de PHP en Foros del Web. Tengo este codigo Código PHP: $nfotos = 3 ;  for( $i = 1 ; $i <= $nfotos ; $i ++)  {      $myfile = "archivo$i" ...
  #1 (permalink)  
Antiguo 05/10/2006, 08:22
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Por que me da este error?

Tengo este codigo
Código PHP:
$nfotos=3
for(
$i=1;$i<=$nfotos;$i++) 

   
$myfile="archivo$i"
   
// archivo temporal (ruta y nombre).  
   
$binario_nombre_temporal=$_FILES[$myfile]['tmp_name'];  
   echo 
$binario_nombre_temporal;

   
// leer del archvio temporal .. el binario subido.  
   // "rb" para Windows .. Linux parece q con "r" sobra ...  
   
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"),filesize($binario_nombre_temporal)));  



 
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tamaño y tipo.  
  
   
$binario_nombre=$_FILES[$myfile]['name'];   
   
$binario_peso=$_FILES[$myfile]['size'];  
   
$binario_tipo=$_FILES[$myfile]['type']; 
Y me da el sigueinte error:

Warning: fread(): supplied argument is not a valid stream resource in c:\wamp\www\noticiaaldia\upload.php on line 36

Warning: fread(): supplied argument is not a valid stream resource in c:\wamp\www\noticiaaldia\upload.php on line 36

Por que sera me lo podrian explicar por favor
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 05/10/2006, 08:37
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
yo no se del uso de fread(), pero el error que te da es que el argumento que le pasas a la funcion no es válido es decir que esto
Código PHP:
fopen($binario_nombre_temporal"rb"),filesize($binario_nombre_temporal
no es correcto o tiene errores.

a ver si esto te ayuda lo saque del manual de PHP

fread() lee hasta length bytes del apuntador de fichero referenciado por fp. La lectura acaba cuando length bytes se han leido o se alcanza EOF, lo que ocurra primero.
Código PHP:
// Mete el contenido de un fichero en una cadena
$filename "/usr/local/something.txt";
$fd fopen ($filename"r");
$contents fread ($fdfilesize ($filename));
fclose ($fd); 
espero te sirva.
saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 05/10/2006, 08:38
Avatar de dan_arg  
Fecha de Ingreso: marzo-2002
Mensajes: 110
Antigüedad: 22 años, 1 mes
Puntos: 0
Hola!
Mira, fopen no puede abrir el archivo.
Muy probablemente tengas problemas con el path.
Podes hacer lo siguiente: proba de hacer un echo del path para ver si es correcto, y proba intentar accederlo en forma absoluta.

Otra cuestion pueden ser los permisos, segun en so que tengas.
Linux: chmod 777 archivo (777 a lo bestia!, para probar nomas )

Saludos
  #4 (permalink)  
Antiguo 05/10/2006, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Estás seguro que:
$binario_nombre_temporal

Está tomando el valor adecuado y correcto? ..

Otro detalle .. El fopen() en este caso intenta acceder directamente a un directorio concreto (al que PHP tiene definido para subir los archivos por HTTP). Este directorio "temporal" según configuración de PHP no es posible accederlo directamente. En esos casos es recomendable primero mover el archivo con la función que Si que tiene permisos: move_uploaded_file() a un directorio de nuestro "sitio" temporal .. hacer el proceso de "fopen()" y de ahí si no lo necesitas más.. lo eliminas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 05/10/2006, 08:56
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Los peromiso estan completos, cluster la impresion de esa variable es eto
c:/wamp/tmp\php4B.tmp

Que significa
__________________
Miguel Padrón :cool:
  #6 (permalink)  
Antiguo 05/10/2006, 09:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por 8461277 Ver Mensaje
Los peromiso estan completos, cluster la impresion de esa variable es eto
c:/wamp/tmp\php4B.tmp

Que significa
Eso es el nombre y ruta al archivo que PHP le dá temporalmente a todo archivo que sube (unico para cada archivo).

Por otro lado, revisa cuantos archivos subes y las iteracciones de tu bucle for() .. No sea que en algún caso pretendes acceder a un valor que no existe. Imprime ese valor en tu bucle y observa.

Cuantos "file" tienes en tu formulario y cuantos archivos subes a la vez (según indicas 3) .. así que deberías subir 3 archivos a la vez .. Si subes uno sólo o dos, no validas el valor de $binario_nombre_temporal para aplicar el proceso de lectura de ese archivo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 05/10/2006, 09:47
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
tenis arzon ya lo resolvi, pero tengo una duda sera que yo puedo colocar esto despues de

Código PHP:
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tamaño y tipo.   
   
   
$binario_nombre=$_FILES[$myfile]['name'];    
   
$binario_peso=$_FILES[$myfile]['size'];   
   
$binario_tipo=$_FILES[$myfile]['type' 
colocar esto para grabarlo en la BD

Código PHP:
$consulta_insertar_dos "UPDATE naci SET foto1=$binario_nombre where id_nacio=22";  
   
mysql_query($consulta_insertar_dos,$conexion) or die(mysql_error()); 
__________________
Miguel Padrón :cool:
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 00:16.