Foros del Web » Programando para Internet » PHP »

Ayuda, Subir archivos

Estas en el tema de Ayuda, Subir archivos en el foro de PHP en Foros del Web. bueno e echo este script para hacer una pagina de hosting de imagenes: Código PHP: <?php $url  =  rand  ( 0 , 965454552 ); $temp  ...
  #1 (permalink)  
Antiguo 12/11/2008, 16:37
Avatar de DarkRing  
Fecha de Ingreso: marzo-2008
Mensajes: 95
Antigüedad: 16 años, 1 mes
Puntos: 1
Ayuda, Subir archivos

bueno e echo este script para hacer una pagina de hosting de imagenes:

Código PHP:
<?php

$url 
rand (0,965454552);
$temp $HTTP_POST_FILES['archivo']['tmp_name'];
$subir $HTTP_POST_FILES['archivo']['name'];
$link "jose/"$url$subir;

if(
$_POST['boton']) {
    if (
is_uploaded_file($temp)) {
       
copy($temp"jose/"$url$subir);
       
$subido true;
      }
      if(
$subido) {
      echo 
"El archivo se a subido correctamente <br>";
      echo 
"Link de la imagen: <a href="$link,">http://"$HTTP_SERVER_VARS['HTTP_HOST'],"/"$link,"</a>";
         } else {
      echo 
"El archivo no se a podido subir. Intenta otra ves";
      }
     }
     
     
     
?>
     
<form action="" method="post" enctype="multipart/form-data" name="form1">
  <p align="center">Archivo
   <input name="archivo" type="file" id="archivo">
  </p>
  <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
</form>
el problema es esta linea:

Código PHP:
      echo "Link de la imagen: <a href="$link,">http://"$HTTP_SERVER_VARS['HTTP_HOST'],"/"$link,"</a>"
en esta linea yo le muestro un link de la imagen que acaba de ser subida, el problema esque si se sube una imagen con espacios en su nombres, ejemplo: "hola chao.jpg" el link se muestra mal

en ves de mostrar http://xxxx.com/xxxx/hola chao.jpg muesta http://xxxx.com/xxxx/hola

donde viene el espacio el link se corta y nose que hacer :S

y lo unico que se me ocurrio es eliminar los espacios del nombre de la imagen antes de subirla, pero nose como hacer eso
  #2 (permalink)  
Antiguo 12/11/2008, 20:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda, Subir archivos

Hola DarkRing,

Te recomiendo que uses move_uploaded_file, por otro lado usar urlencode() para codificar la imagen si tiene espacios.

Saludos.
  #3 (permalink)  
Antiguo 12/11/2008, 20:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda, Subir archivos

amigo, es que debes escribir tu HTML correctamente...

si tienes espacios por eso no te los interpreta bien, vaya... no es problema del PHP sino tu HTML
(pero aun con espacios, haciendo buen uso de los atributos funciona... de veras)


recuerda que los valores de atributos (href, src, etc.) deben ir entre comillas dobles...

Código PHP:
echo 'Link de la imagen: <a href="'$link,'">http://'$_SERVER['HTTP_HOST'], '/'$link,'</a>'
también procura dejar de usar los arreglos largos... osea $HTTP_* y usa sus equivalentes cortos... $_*


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/11/2008, 11:20
Avatar de DarkRing  
Fecha de Ingreso: marzo-2008
Mensajes: 95
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Ayuda, Subir archivos

gracias por responder, ya lo e arreglado

gatorv que diferencia hay entre copy y move_uploaded_file ?
  #5 (permalink)  
Antiguo 13/11/2008, 11:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayuda, Subir archivos

copy() sirve para copiar cualquier archivo a cualquier destino, move_uploaded_file solamente mueve archivos que se enviaron por el upload, por lo que es mas seguro contra algún ataque.

Saludos.
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:36.