Foros del Web » Programando para Internet » PHP »

Upload de imagenes y renombrarlas.

Estas en el tema de Upload de imagenes y renombrarlas. en el foro de PHP en Foros del Web. Hola amigos: He conseguido este script para hacer el upload de imagenes a mi página: <FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST"> ARCHIVO DE IMAGEN: <INPUT NAME="userfile" TYPE="file"> ...

  #1 (permalink)  
Antiguo 09/01/2003, 13:35
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta Upload de imagenes y renombrarlas.

Hola amigos:

He conseguido este script para hacer el upload de imagenes a mi página:

<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
ARCHIVO DE IMAGEN: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Subir Imagen">
</FORM>

<?php

// Image file upload by Bloody
// http://www.bloodys.com/
// email: [email protected]
// If you use this script, please put a link back to http://www.bloodys.com/

$path = "";
$max_size = 50000;

if (is_uploaded_file($userfile)) {

if ($userfile_size>$max_size) { echo "EL ARCHIVO ES DEMASIADO GRANDE (max. 40 KB).<br>\n"; exit; }

if (($userfile_type=="image/gif") || ($userfile_type=="image/pjpeg")) {

if (file_exists($path . $userfile_name)) { echo "EL ARCHIVO YA EXISTE.<br>\n"; exit; }

$res = copy($userfile, $path . $userfile_name);
if (!$res) {
echo "UPLOAD FALLADO!<br>\n"; exit; }
else
echo "UPLOAD EXITOSO!<br>\n";

echo "Nombre del Archivo: $userfile_name<br>\n";
echo "Tamaño del Archivo: $userfile_size bytes<br>\n";
echo "Formato del Archivo: $userfile_type<br>\n";
} else { echo "FORMATO DEL ARCHIVO ERRONEO (solo jpeg o gif).<br>\n"; exit; }

}

?>

Funciona bien. La pregunta es la siguiente:
Mediante este método el visitante puede subir imágenes con cualquier nombre. A mí me interesa que se vayan guardando con nombres correlativos. Esto es, foto001, foto002, foto003, etc.
Se podría hacer? Si se pudiera hacer el siguiente paso sería poder crear una página que mostrara estas imagenes en thumbnails (con sus correspondientes links a las imágenes grandes) y (si no es pedir mucho ) poder decidir cuantos thumbs por página (por ejemplo 10) empezando por el primero al décimo... con link a lá página siguiente y anterior.

Pido demasiado?

Salu2.
__________________
http://www.sexoparamo.com
  #2 (permalink)  
Antiguo 09/01/2003, 14:55
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
es muy facil de hacer, para guardarlo con el nombre que quieras, solodebes ponerlo en el segundo parametro de copy(), y para llevar una cuanta de las imagenes, debes hacerlo, o llevando la cuenta de cuantas hay en una base de datos, o en un archivo .txt y gusrdar la siguiente imagene con el numero posterior a el que tienes almacenado.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 09/01/2003, 16:47
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Gracias por tu respuesta, goncafa. Pero soy novato con esto del PHP. Podrías explicarme un poco mejor lo del "copy()"? Me gustaría que las imágenes se fueran guardando autómaticamente, sin tener que preocuparme yo de nada. Por cierto, no dispongo de base de datos. Cómo puedo hacerlo con un .txt?

P.D.: Este es mi primer post en este Foro, pero debo decir que me encanta, que nunca he visto un foro tan concurrido y en el que se contesten tan rápido los post. Gracias por adelantado

Salu2.
__________________
http://www.sexoparamo.com
  #4 (permalink)  
Antiguo 09/01/2003, 17:20
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
bueno, para empezar, la funcion copy() se define de la siguiente manera

int copy(string origen, string destino)

en tu caso, el archivo viene por formulario mediante post, y el nombre de la variable que maneja este archivo sera $userfile ya que es el nombre que esta en name dentro del input. Ahora bien, al dar submit, en la pagina que procesa estos datos automaticamnete se crearan las variables

Código PHP:
$userfile

$userfile_name

$userfile_size 
$userfile contiene la ruta completa al archivo en tu disco duro, $userfile_name contendra el nombre del archivo, junto con su extencion, y $userfile_size contendra el tamaño en bytes de este archivo.

como veras, con esto ya tenemos lo sufisiente para hacer el upload, pues el parametro de string origen seria $userfile, y el parametro de string destino seria $userfile_name, en caso de que la quieras guaradar en alguna carpeta en especial, debes tambien incluirta, por ejemplo

Código PHP:
$destino "imagenes/$userfile_name"
en este caso la funcion copy te deberia quedar de la sigueinte manera

Código PHP:
copy($userfile$destino); 
ahora lo que queda es como cambiar el nombre de las imagenes con numeros consecutivos, en tu caso lo aremos con un archivo .tx, y para esto usaremos las funciones que manejan archivos, te explico en el post siguiente, porque aqui ya no alcanza...
__________________
se despide hasta la proxima
Gonzalo Castillo
  #5 (permalink)  
Antiguo 09/01/2003, 17:34
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
para manejra el archivo utilizaremos la funcion fopen() que abre un ficher, fread() que lee y fwrite() que escribe.

para ello, y para hacer esto mas facil, deberas crear un archivo llamado numimages.txt que contenga dentro solo un 0 y lo debes subir al servidor, por ejemplo, en la carpeta ./imagenes/

ahora para renombrar las fotos que subas ocuparemos este archivo para nos sirva de guia en que numero vamos.

Código PHP:
$archivo fopen('imagenes/numimages.txt''w'); //abrimos el archivo

$numero fread($archivofilesize('images/numimages.txt');
//con esto ya tenemos en $numero el numero 
//que este dentro del archivo

$extencion split('\.'$userfile_name); //aca sacamnos la extencion

$extencionN $extencion[count($extencion) - 1];

$destino "imagenes/img$numero.$extencionN";
//con esto ya tenemos la imagen con el nombre que debe estar
//ahora debesmos guardar en el archivo un numero mas
//al que tenia

fwrite($archivo, ++$numero); //escribimos el numero nuevo

//ahora solo falta hacer el copy

copy($userfile$destino); 
con esto deberia funcionar, aunque claro, no lo he testeado, asi que cualquier cosa, avisas.

Espero haber ayudado

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #6 (permalink)  
Antiguo 10/01/2003, 17:49
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
No sé si lo he entendido bien...

Este código, dónde debo introducirlo exactamente dentro del mío?


$archivo = fopen('imagenes/numimages.txt', 'w'); //abrimos el archivo

$numero = fread($archivo, filesize('images/numimages.txt');
//con esto ya tenemos en $numero el numero
//que este dentro del archivo

$extencion = split('.', $userfile_name); //aca sacamnos la extencion

$extencionN = $extencion[count($extencion) - 1];

$destino = "imagenes/img$numero.$extencionN";
//con esto ya tenemos la imagen con el nombre que debe estar
//ahora debesmos guardar en el archivo un numero mas
//al que tenia

fwrite($archivo, ++$numero); //escribimos el numero nuevo

//ahora solo falta hacer el copy

copy($userfile, $destino);



O sea, cómo quedaría el código al final?
Y otra, pregunta: si la carpeta de destino es la misma, basta con quitar todos los "imagenes/" del código?
__________________
http://www.sexoparamo.com

Última edición por ORPHEO; 10/01/2003 a las 18:19
  #7 (permalink)  
Antiguo 10/01/2003, 18:22
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
ese codigo debes agregarlo en la pagina que procesa los datos, donde quieras, y con respecto a lo de las carpetas la respuesta es si, pero te acosejo que tu mismo experimentes con el codigo y lo edites como nesesites, solo asi aprenderas

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #8 (permalink)  
Antiguo 10/01/2003, 18:56
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Cuál es el error

Hola de nuevo:

Ya sé que soy un poco torpe, pero es que soy muy novato...
Te ruego que tengas paciencia conmigo, por favor

La página que procesa los datos es la misma del formulario (creo que eso está en "ACTION="" ").

He probado con este código, pero me sale esté mensaje de error:

"Parse error: parse error in /home/sexoparamo/fo/vsf/imagenes/upload.php on line 27"

Código:

<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
ARCHIVO DE IMAGEN: <INPUT NAME="userfile" TYPE="file">
&nbsp; Tu nombre:</b></font><b>
<INPUT TYPE="submit" VALUE="Subir Imagen">
</FORM>

<?php

// Image file upload by Bloody
// http://www.bloodys.com/
// email: [email protected]
// If you use this script, please put a link back to http://www.bloodys.com/

$path = "";
$max_size = 50000;

if (is_uploaded_file($userfile)) {

if ($userfile_size>$max_size) { echo "EL ARCHIVO ES DEMASIADO GRANDE (max. 40 KB).<br>\n"; exit; }

if (($userfile_type=="image/gif") || ($userfile_type=="image/pjpeg")) {

if (file_exists($path . $userfile_name)) { echo "EL ARCHIVO YA EXISTE.<br>\n"; exit; }

$archivo = fopen('numimages.txt', 'w'); //abrimos el archivo

$numero = fread($archivo, filesize('numimages.txt');
//con esto ya tenemos en $numero el numero
//que este dentro del archivo

$extencion = split('.', $userfile_name); //aca sacamnos la extencion

$extencionN = $extencion[count($extencion) - 1];

$destino = "img$numero.$extencionN";
//con esto ya tenemos la imagen con el nombre que debe estar
//ahora debesmos guardar en el archivo un numero mas
//al que tenia

fwrite($archivo, ++$numero); //escribimos el numero nuevo

//ahora solo falta hacer el copy

$res = copy($userfile, $destino);
if (!$res) {
echo "UPLOAD FALLADO!<br>\n"; exit; }
else
echo "UPLOAD EXITOSO!<br>\n";

echo "Nombre del Archivo: $userfile_name<br>\n";
echo "Tamaño del Archivo: $userfile_size bytes<br>\n";
echo "Formato del Archivo: $userfile_type<br>\n";
} else { echo "FORMATO DEL ARCHIVO ERRONEO (solo jpeg o gif).<br>\n"; exit; }

}
?>


Cuál es el error? Qué falla?

Salu2.
__________________
http://www.sexoparamo.com
  #9 (permalink)  
Antiguo 10/01/2003, 20:28
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
primero que nada, si vas a procesar los datos en la misma pagina, antes debes discriminar si los datos del formulario han sido enviados o no, y dependiendo de eso, muestras el formulario o procesas, si no sabes como hacer eso, lo mejor es procesar los datos en otra pagina, por otro lado, en action no tienes nada, debe haber una pagina que procese, si es la misma debe estar el nombre y extencion de la mims pagina, o la variable $PHP_SELF que contiene el nombre donde esta la aplicacion actual, mejora de ese modo el codigo, luego ves que errores te manda.

Otra cosa, trata de poner el codigo escalado o indentado para entenderlo mejor, y utiliza el boton de php para colorearlo, de la forma en que lo colocas es mas dificil entenderlo y ver los errores

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #10 (permalink)  
Antiguo 11/01/2003, 15:56
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Lo he intentado así:

En la página del formulario he incluído "ACTION="procesar.php" ".
Y en procesar.php he incluído el código entero en php que exponía en el anterior post.

Me sigue dando:

Parse error: parse error in /home/sexoparamo/fo/vsf/imagenes/procesar.php on line 21.

Será un problema de permisos? Debería dar permisos 777 al numimagenes.txt?

Salu2.
__________________
http://www.sexoparamo.com
  #11 (permalink)  
Antiguo 11/01/2003, 16:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El parse error es un error de sintaxis en el script. Puede ser que te falte el ; final o un ) o } o un parametro de una funcion. Revisa tu linea 21 y la anterior. Y si vuelves a preguntar por un error asi, indica de alguna forma en el codigo cual es tu linea 21.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 11/01/2003, 16:56
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola:

Realmente no sé cuál es la línea 21 del código que expuse...
Cómo se cuentan exactamente las líneas? Es decir, se cuentan las líneas en blanco? Las líneas de comentario?

Salu2.
__________________
http://www.sexoparamo.com
  #13 (permalink)  
Antiguo 11/01/2003, 17:54
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 21 años, 5 meses
Puntos: 0
Usa algún editor que te muestre el número de línea. Los hay varios.

Maguma, PHPed para windows entre otros.

Por cierto, ese código no te funcionará en caso de que las variables globales estén a OFF.

1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #14 (permalink)  
Antiguo 11/01/2003, 17:58
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola:
Qué es eso de las variables a OFF?

Salu2.
__________________
http://www.sexoparamo.com
  #15 (permalink)  
Antiguo 11/01/2003, 18:08
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
OK. La linea es:

Código PHP:
$numero fread($archivofilesize('numimages.txt'); 
__________________
http://www.sexoparamo.com
  #16 (permalink)  
Antiguo 11/01/2003, 19:31
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
recuerda tambien que es action='pagina.php' no 'action=pagina.php''

y si puedes porfavor copia y pega el error aqui, asi sabremos realmente que ocurre, y asegurate de saber cual es la linea 21, debes usar un editor que muestre las lineas, cualquier editor para php lo hace

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #17 (permalink)  
Antiguo 11/01/2003, 19:58
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 21 años, 5 meses
Puntos: 0
Un ejemplo de como hacer un upload de estos, en el siguiente sitio:

http://usuarios.lycos.es/manualesvarios

Que funciona con las variables globales a off.

1 Saludo.


(NOTA: En estos momentos el servidor 'usuarios.lycos.es' está caido)
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates

Última edición por BVis; 11/01/2003 a las 20:03
  #18 (permalink)  
Antiguo 12/01/2003, 14:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Sintaxis basica: en una sentencia, el numero ( tiene que ser igual al numero de ) (sin contar los de las cadenas de texto). Tienes que familiarizarte rapido con estos errores, ya que suelen ser muuuuuy comunes. Esa linea debe ser :
Código PHP:
$numero fread($archivofilesize('numimages.txt')); 
Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #19 (permalink)  
Antiguo 15/01/2003, 14:28
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
En primer lugar, gracias, josemi: me faltaba ese paréntesis (que fallo más tonto...).

Y gracias a todos por vuestras respuestas.

El script funciona ahora. Pero aún tiene un error. Me explico.
Ahora sube las imágenes sin ningún problema. Pero las llama a todas "img.", sin ningún tipo de extensión. O sea, que por muchos uploads que se hagan, en ese directorio sólo existe un archivo (de imagen, porque si accedo a la url de ese archivo por el navegador, http://www.misitio.com/.../imagenes/img. aparece la última imagen subida) que se llama img. y que va cambiando a medida que se hacen uploads.

Recopilando, aquí van los códigos de nuevo a ver si me podéis ayudar:


- upload.php :

<FORM ENCTYPE="multipart/form-data" ACTION="procesar.php" METHOD="POST">
ARCHIVO DE IMAGEN: <INPUT NAME="userfile" TYPE="file">
&nbsp; Tu nombre:</b></font><b>
<INPUT TYPE="submit" VALUE="Subir Imagen">
</FORM>


- procesar.php:

Código PHP:
<?php

// Image file upload by Bloody
// [url]http://www.bloodys.com/[/url]
// email: [email][email protected][/email]
// If you use this script, please put a link back to [url]http://www.bloodys.com/[/url]

$path "";
$max_size 50000;

if (
is_uploaded_file($userfile)) {

if (
$userfile_size>$max_size) { echo "EL ARCHIVO ES DEMASIADO GRANDE (max. 40 KB).<br>\n"; exit; }

if ((
$userfile_type=="image/gif") || ($userfile_type=="image/pjpeg")) {

if (
file_exists($path $userfile_name)) { echo "EL ARCHIVO YA EXISTE.<br>\n"; exit; }

$archivo fopen('numimages.txt''w'); //abrimos el archivo

$numero fread($archivofilesize('numimages.txt'));
//con esto ya tenemos en $numero el numero 
//que este dentro del archivo

$extencion split('.'$userfile_name); //aca sacamnos la extencion

$extencionN $extencion[count($extencion) - 1];

$destino "img$numero.$extencionN";
//con esto ya tenemos la imagen con el nombre que debe estar
//ahora debesmos guardar en el archivo un numero mas
//al que tenia

fwrite($archivo, ++$numero); //escribimos el numero nuevo

//ahora solo falta hacer el copy

$res copy($userfile$destino);
if (!
$res) {
echo 
"UPLOAD FALLADO!<br>\n"; exit; }
else
echo 
"UPLOAD EXITOSO!<br>\n";

echo 
"Nombre del Archivo: $userfile_name<br>\n";
echo 
"Tamaño del Archivo: $userfile_size bytes<br>\n";
echo 
"Formato del Archivo: $userfile_type<br>\n";
} else { echo 
"FORMATO DEL ARCHIVO ERRONEO (solo jpeg o gif).<br>\n"; exit; }

}
?>
Salu2.
__________________
http://www.sexoparamo.com
  #20 (permalink)  
Antiguo 15/01/2003, 14:34
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Otra preguntilla:

Cómo podría hacer para que una vez procesado en procesar.php apareciera también el texto:

Nuevo nombre de la imagen: imgX .jpg (X=la que toque)
Se han subido X imágenes a esta sección.

Salu2.
__________________
http://www.sexoparamo.com
  #21 (permalink)  
Antiguo 15/01/2003, 15:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si abres el fichero con 'w', lo borras antes de leer. Prueba a abrirlo con 'w+' o con otro de los modos que vienen en fopen(). Esta es la causa de que no añada el numero a 'img'.

Sobre la extension, debes comprobar que $extencionN toma el valor adecuado con un echo. Si toma el valor correcto, prueba a asignar el valor a destino asi:
Código PHP:
$destino 'img'.$numero.'.'.$extencionN
Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #22 (permalink)  
Antiguo 15/01/2003, 16:16
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Como compruebo lo que comentabas del valor adecuado de $extencionN ? Haciendo un upload? Te refieres a eso?

Espera, creo que te refieres a añadir al final un:

Código PHP:
echo "Extensión: $extencionN<br>\n"
Es eso?

Salu2.
__________________
http://www.sexoparamo.com

Última edición por ORPHEO; 15/01/2003 a las 16:25
  #23 (permalink)  
Antiguo 15/01/2003, 16:34
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
He probado a abrirlo con "w+" y he añadido al final

Código PHP:
echo "Extensión: $extencionN<br>\n"
El resultado ha sido este:

UPLOAD EXITOSO!
Nombre del Archivo: prueba.jpg
Tamaño del Archivo: 48586 bytes
Formato del Archivo: image/pjpeg
Extensión:

Eso quiere decir que no coge el valor?

Y el archivo sigue siendo "img."

Salu2.
__________________
http://www.sexoparamo.com
  #24 (permalink)  
Antiguo 15/01/2003, 17:19
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
He añadido un par de líneas más al final:

Código PHP:
echo "Extensión: $extencionN<br>\n";
echo 
"Nuevo nombre de la imagen: $destino<br>\n";
echo 
"Se han subido $numero imágenes a esta sección.<br>\n"
Al hacer un upload el resultado ha sido este:

UPLOAD EXITOSO!
Nombre del Archivo: prueba2.jpg
Tamaño del Archivo: 41524 bytes
Formato del Archivo: image/pjpeg
Extensión:
Nuevo nombre de la imagen: img.
Se han subido 1 imágenes a esta sección.

Y al hacer otro más, ha sido este:

UPLOAD EXITOSO!
Nombre del Archivo: prueba3.jpg
Tamaño del Archivo: 32856 bytes
Formato del Archivo: image/pjpeg
Extensión:
Nuevo nombre de la imagen: img.
Se han subido 1 imágenes a esta sección.


Qué sucede?

Salu2.
__________________
http://www.sexoparamo.com
  #25 (permalink)  
Antiguo 15/01/2003, 19:43
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Al parecer $extencionN no te toma el valor correcto.
Proba con
Código PHP:
$extencionN strrchr($userfile_name"."); 
esto te devuelve ".xxx" por lo que debes cambiar la linea de $destino:

Código PHP:
$destino 'img'.$numero.$extencionN
  #26 (permalink)  
Antiguo 15/01/2003, 19:52
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Me di cuenta de otra cosa...
Cuando usas fopen con mode w o w+ cada ves que se abre el fichero se trunca con longitud 0, es decir se borra. Para agregar datos y leer usa a+

http://www.php.net/manual/es/function.fopen.php

PD: publica el codigo como te va quedando

Saludos
  #27 (permalink)  
Antiguo 15/01/2003, 20:07
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Upsss!! Me equivoque
Estaba bien usar w+ porque al parecer (y recien me doy cuenta) el fichero lo unico que guarda es el numero de imagenes, y mirando a grandes razgos pense que el txt era una especie de log.
Bueno, en todo caso ya sabes para que sirve a+


Saludossss
  #28 (permalink)  
Antiguo 15/01/2003, 22:38
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 2
menos ataos.. aqui taria el script mas listo.........

Código PHP:
<?php
$path 
"";
$max_size 50000;

if (
is_uploaded_file($userfile)) {

if (
$userfile_size>$max_size) { echo "EL ARCHIVO ES DEMASIADO GRANDE (max. 40 KB).<br>\n"; exit; }

if ((
$userfile_type=="image/gif") || ($userfile_type=="image/pjpeg")) {

if (
file_exists($path $userfile_name)) { echo "EL ARCHIVO YA EXISTE.<br>\n"; exit; }

$archivo=fopen("numimages.txt","r"); //abrimos el archivo
$n=fread($archivo,filesize("numimages.txt")); //leemos el contenido
$numero=$n+1//le sumamos un numero mas al la cantidad del momento
fclose($archivo); //cerramos el archivo 
$fd=fopen("numimages.txt","w"); //borramos el archivo y lo abrimos
fputs($fd$numero); //guardamos lanueva cantidad de imagenes
fclose($fd); //cerramos el archivo con los nuevos datos

$extencion substr($userfile_name,-3); //sacamos la extension

$destino "img".$numero.".".$extencion.""//renombramos la imagen


$res copy($userfile$destino); //copiamos la imagen
if (!$res) {
echo 
"UPLOAD FALLADO!<br>\n"; exit; }
else
echo 
"UPLOAD EXITOSO!<br>\n";
//datos extra
echo "Nombre del Archivo: $userfile_name<br>\n";
echo 
"Tamaño del Archivo: $userfile_size bytes<br>\n";
echo 
"Formato del Archivo: $userfile_type<br>\n";
echo 
"Extensión: $extencion<br>\n";
echo 
"Nuevo nombre de la imagen: $destino<br>\n";
echo 
"Se han subido $numero imágenes a esta sección.<br>\n";
} else { echo 
"FORMATO DEL ARCHIVO ERRONEO (solo jpeg o gif).<br>\n"; exit; }

}
?>

................... eso es todo......
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #29 (permalink)  
Antiguo 16/01/2003, 11:24
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Eres un monstruo, Quest. He probado tu código y funciona a la perfección. Es justo lo que andaba buscando!

MUCHAS GRACIAS A TODOS POR VUESTRA AYUDA.

Salu2.
__________________
http://www.sexoparamo.com
  #30 (permalink)  
Antiguo 16/01/2003, 16:53
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 21 años, 4 meses
Puntos: 0
Upssss...

Acabo de encontrarle un inconveniente. Al subir las imágenes, me las sube como img1.jpg, img2.jpg, ..., img10.jpg, img11.jpg., etc.

Tengo un pequeño script en php que automáticamente me hace una galería con las fotos y me crea los thumbs automáticamente.
Pero al subir de esta manera las imágenes no me las ordena cronológicamente, sin que hace: img1.jpg, img10.jpg, img2.jpg, img3.jpg, ...

Hay alguna manera de que al renombrar las imágenes incluya un par de ceros o tres? (img0001.jpg, img0002.jpg, ...)

Salu2.
__________________
http://www.sexoparamo.com
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 15:01.