Foros del Web » Programando para Internet » PHP »

Nombre de archivo

Estas en el tema de Nombre de archivo en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario para subir archivos de imagen a la web y a su vez guardar todos los datos en la base ...
  #1 (permalink)  
Antiguo 28/01/2010, 11:50
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Nombre de archivo

Hola a todos,

tengo un formulario para subir archivos de imagen a la web y a su vez guardar todos los datos en la base de datos.

El principal problema es que sólo necesito guardar el nombre del archivo junto con la extensión, en la base de datos y esto no me lo hace del todo bien(algunos archivos si que me guarda bien el nombre pero de otros no).

Os pongo el codigo que estoy utilizando que creo que es muy lioso y ademas me da errores.

$archivo_mal = $_POST['text_ofer'];

$conta = strlen($archivo_mal);
for ($i=0;$i<$conta+1;$i++)
{
$caracter=substr($archivo_mal,$i,1);

if ($i==2)//siempre la primera barra ira dentras de la letra de unidad seguida de 2 puntos(c:)
{
$barra=$caracter;
//echo 'Esta es la barra mala, ' .$barra;
}

if($caracter==$barra)
{
$barra_ok="/";
$caracter=$barra_ok;
//echo 'Esta es la barra buena, ' .$caracter;
}

$direccion_correcta=$direccion_correcta.$caracter;
}

$archivo_bien = basename($direccion_correcta);

Un saludo.
  #2 (permalink)  
Antiguo 28/01/2010, 11:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Nombre de archivo

basename($path) : http://php.net/manual/en/function.basename.php
  #3 (permalink)  
Antiguo 29/01/2010, 07:01
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

Ya encontre el problema, pero no la solución.

El problema es que el codigo de arriba funciona bien en i.e. 6.0 y mal en Mozila, en Mozila funciona poniendo directamente $_POST['text_ofer'], pero esto no funciona en i.e..

Tampoco me funciona poniendo sólo basename($path), esto funciona con Mozila pero no con i.e.

Como puedo solucionar esto
  #4 (permalink)  
Antiguo 29/01/2010, 07:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Nombre de archivo

PHP no se afecta por navegador, porque el código corre en el servidor. El problema es que IE tiende a mantener en el cache la información que corrió la primera vez si no ha visto algún cambio en la dirección. Si la primera vez fue un error, te traerá esa información. Te sugiero que borres el cache para que veas que si funciona el código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 29/01/2010, 11:06
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

He borrado la cache y he puesto el siguiente codigo:

$archivo_bien = basename($_POST['text_ofer']);

y sólo me funciona cuando ejecuto la pagina de mozilla si lo hago desde ie 8.0 me guarda la ruta completa incluido la carpeta y el archivo.

Un saludo.
  #6 (permalink)  
Antiguo 29/01/2010, 11:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Nombre de archivo

Haz un var_dump a la variable $archivo_bien y escribe lo que te trae en ambos navegadores.
Código PHP:
Ver original
  1. $archivo_bien = basename($_POST['text_ofer']);
  2. var_dump($archivo_bien);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 29/01/2010, 11:25
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

En Mozila pone lo siguiente: string(12) "100_0785.jpg"
En ie 8.0. pone lo siguiente: string(26) "C:\\fakepath\\100_0786.jpg"
  #8 (permalink)  
Antiguo 29/01/2010, 11:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Nombre de archivo

Verifica si usando pathinfo te ayuda. Aunque sigo indicando que esta raro que te salga la ruta completa, porque el código de PHP corre en el servidor no en el navegador.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 29/01/2010, 12:07
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

La solución para la creación de la carpeta C:\\fakepath\\ la encontre en la siguiente dirección: http://www.mabingenieros.com/solucio...explorer-8.htm

Así que una vez corregido ahora me sigue sin funcionar pero me pone la dirección completa del archivo de la siguiente forma:
string(75) "D:\\copia disco g\\FOTOGRAFIA\\Fotografías Kodak\\2006-09-05\\100_0788.jpg"

No entiendo porque ahora no funciona.
  #10 (permalink)  
Antiguo 29/01/2010, 12:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Nombre de archivo

Y usando pathinfo, ¿no te resultó?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 29/01/2010, 12:35
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

No tampoco funciona, lo unico que funciona es el codigo que puse en el primer post, pero este codigo con mozilla no funciona porque el codigo es para quitar la ruta del archivo y con mozilla ya la quita automaticamente es por lo que quita caracteres del nombre del archivo, pero no obstante creo que voy a intentar utilizar este codigo y mejorarlo para mozilla.

Un millon de gracias.
  #12 (permalink)  
Antiguo 29/01/2010, 13:20
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Nombre de archivo

Ya he conseguido que funcione mediante el siguiente codigo:

$archivo_mal = $_POST['text_ofer'];
var_dump($archivo_mal);

$dospuntos=substr($archivo_mal,1,1);
echo 'dos puntos, ';
var_dump($dospuntos);

if ($dospuntos==':')
{
$conta = strlen($archivo_mal);
for ($i=0;$i<$conta+1;$i++)
{
$caracter=substr($archivo_mal,$i,1);

if ($i==2)//siempre la primera barra ira dentras de la letra de unidad seguida de 2 puntos(c:)
{
$barra=$caracter;
//echo 'Esta es la barra mala, ' .$barra;
}

if($caracter==$barra)
{
$barra_ok="/";
$caracter=$barra_ok;
//echo 'Esta es la barra buena, ' .$caracter;
}

$direccion_correcta=$direccion_correcta.$caracter;
}

$archivo_bien = basename($direccion_correcta);
var_dump($archivo_bien);
}
else
{
$archivo_bien = basename($_POST['text_ofer']);
var_dump($archivo_bien);
}

Yo creo que el problema esta en i.e. 8.0 que no funciona bien con algunos comandos.

Etiquetas: nombre
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 20:33.