Foros del Web » Programando para Internet » PHP »

duda al subir archivo en el servidor

Estas en el tema de duda al subir archivo en el servidor en el foro de PHP en Foros del Web. Buenas, tengo una duda a la hora de subir un archivo al servidor. Quiero darle el nombre de un valor que tengo almacenado en una ...
  #1 (permalink)  
Antiguo 13/05/2008, 12:29
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
duda al subir archivo en el servidor

Buenas, tengo una duda a la hora de subir un archivo al servidor. Quiero darle el nombre de un valor que tengo almacenado en una variable (id) que viene dada por otra página. Mi codigo que teng es este.

$id=$_GET['ID'];
$ruta= "carpeta/$id".$_FILES['fichero']['name'];

Gracias
  #2 (permalink)  
Antiguo 13/05/2008, 12:35
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: duda al subir archivo en el servidor

Hola
Prueba asi, con el punto se concatenan las variables y las expresiones regulares


Código PHP:
$ruta"carpeta/"$id $_FILES['fichero']['name']; 
Un saludo
  #3 (permalink)  
Antiguo 13/05/2008, 16:11
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Re: duda al subir archivo en el servidor

Realizé lo que me dijistes y no me funciono me pone como nombre id, gracias de todas maneras. Si saben alguna otra manera me harían un favor.

Saludos
  #4 (permalink)  
Antiguo 13/05/2008, 16:19
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: duda al subir archivo en el servidor

pues si pone el nombre solo la id, a lo mejor la variable

Cita:
$_FILES['fichero']['name'];
viene vacia, haz un echo de la variable a ver que imprime
  #5 (permalink)  
Antiguo 13/05/2008, 16:42
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Re: duda al subir archivo en el servidor

Puede ser que la variable este vacia, he definido esta variable en otro script que está en la misma página. Puede ser q no me conserve el valor?
  #6 (permalink)  
Antiguo 13/05/2008, 16:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: duda al subir archivo en el servidor

si no la guardas en una variable de session o la pasas por GET y la pasas a la otra pagina, no es que llegue vacia, es que no llega,
me ayudaria mas si me enseñaras los codigos, podria, a lo mejor, si se la respuesta, ayudarte mejor
un saludo
  #7 (permalink)  
Antiguo 13/05/2008, 19:48
isra00
Invitado
 
Mensajes: n/a
Puntos:
Re: duda al subir archivo en el servidor

Has verificado que $_GET["id"] no está vacía? Compruébalo con echo $_GET["id"]. Quizá sea más conveniente en tu caso usar POST, si nos enseñas un poco más de tu código podremos ayudarte mejor.
  #8 (permalink)  
Antiguo 15/05/2008, 12:10
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Re: duda al subir archivo en el servidor

Teneis razón, lo expliqué muy por encima. Lo voy a explicar de manera más detallada.

Estoy haciendo un formulario para que el usuario cuelgue archivos en mi servidor.

Este es el formulario ( CODIGO )

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Archivo a subir <input name="fichero" type="file">
<input name="submit" type="submit" value="Upload!">
</form>


Este es el script para almacenar el documento en mi servidor

if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo


$ruta= "carpeta/$id".$_FILES['fichero']['name'];
// Se guardaría dentro de "carpeta" con el nombre original

if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
}


Estos dos scripts estan dentro de un html donde tengo una variable $id. Lo que querría hacer és pasar el valor de la variable $id dentro del segundo script ( creo que en el script del formulario no tengo que tocar nada ) para así guardar el documento con nombre igual al valor de la variable $id que tengo en la pagina html. Utilizaré esto para diferenciar los archivos que me suben los usuarios.


Espero que no me haya echo muy pesado

Gracias por todo
  #9 (permalink)  
Antiguo 15/05/2008, 14:39
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: duda al subir archivo en el servidor

prueba esto, pero lo unico es que la variable $id no esta definida en ningun sitio

Código PHP:
if (isset($_POST['submit'])) { 
if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo 



$ruta"../carpeta/"
//necesitas la variable id que no se de donde la quieres sacar, por que del form no viene esta variable
$nombre $id .$_FILES['fichero']['name']; 
$nombre_final $ruta $nombre
// Se guardaría dentro de "carpeta" con el nombre original 

if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) { // se coloca en su lugar final 
echo "<b>Upload exitoso!. Datos:</b><br>"
echo 
"Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
echo 
"<br><hr><br>"


esta es la idea, pero donde esta la variable $id, o de donde la quieres sacar, por que si es de una BD lo has de hacer haciendo una consulta a la bd para obtener ese id
Un saludo
  #10 (permalink)  
Antiguo 15/05/2008, 14:57
 
Fecha de Ingreso: agosto-2003
Ubicación: Guatemala
Mensajes: 94
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: duda al subir archivo en el servidor

Hola, a ver si entendi, dentro de un php (imagino que es un php donde tienes la variable $id) haces un include con los 2 scripts que mencionas ?

Si es asi, dentro del php que usas para subir el archivo, debes hacer referencia a tu variable $id, como si fuera una variable global, usando para ello el keyword global, de esta manera:

global $id,

de esta manera tu script, sabe que el valor $id, vendra de otro php, y no se perdera el valor que tiene esta variable almacenada.

Saludos.
__________________
Luis Pirir
Programador Web
Móvil: (502) 50623292
  #11 (permalink)  
Antiguo 16/05/2008, 08:52
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: duda al subir archivo en el servidor

No es exactamente asi, sinto no haberlo explicado más aun, pensaba que seria algo mas sencillo.

En la página hay 2 scipts y un formulario.

El primer script es este:

<?php
if(isset($_GET['ID']))
{

$id=$_GET['ID']; //ahi recien vas a tomar la variable.
}

// Conecta con la BBDD adecuada y guarda el identificador de conecion en link.
$link = mysql_connect("localhost", "root","*****");
mysql_select_db("tipos", $link);

// realiza la busqueda y te ordena por el nombre( en result guarda todas las respuestas de la busqueda)
$result = mysql_query("SELECT * FROM perro WHERE id_perro=' ".$id." ' ", $link);


// esta función saca todos los elementos de result
if ($row = @mysql_fetch_array($result))
{

// abre la tabla
echo "<table width='80%' align='center' border='0' bordercolor='000000' cellspacing='0' bgcolor='ffffff'> \n";
//Mostramos los nombres de las tablas

echo "<tr> \n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->name</td> \n";
}

echo "</tr> \n";
do {
echo "<tr> \n";

echo "<table width='450'>

<tr><td><strong>Nombre </strong></td><td>".$row['nombre']."</td></tr>
<tr><td width='150' valign='top'><strong>Descripción :</strong> </td><td width='450'>".$row['descripcion']."</td></tr>
</table>";


} while ($row = mysql_fetch_array($result));
echo "</table> \n";
}

else {
echo "&iexcl; ";
}
?>

este script captura la ID de una seleccion realizada en una página anterior.


y el segundo script es


<?php


if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo


$ruta= "carpeta/$id".$_FILES['fichero']['name'];
// Se guardaría dentro de "carpeta" con el nombre original

if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
}

Este script TENDRÍA que guarda un archivo en un mi servidor en una carpeta llamada "carpeta" y con el nombre que contiene la variable $id.

El tema creo que sería como pasar la variable $id de un script a otro

Gracias por la paciencia
  #12 (permalink)  
Antiguo 16/05/2008, 11:01
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: duda al subir archivo en el servidor

pon en el primer script donde esta el GET

Cita:
$_SESSION ['id'] = $id; //guardo $id en una variable de sesion
y en el segundo script para recuperarla pones

Cita:

$id = $_SESSION ['id']; //recupero la variable de sesion id
Intentalo, espero que te funcione
Un saludo
  #13 (permalink)  
Antiguo 16/05/2008, 11:34
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: duda al subir archivo en el servidor

No funcionó. He probado con echos y con este sistema no me pasa el la variable de script a script.

Sigo buscando

Gracias de todas maneras
  #14 (permalink)  
Antiguo 16/05/2008, 12:09
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: duda al subir archivo en el servidor

PERDON

Comienza todos los scripts con


Cita:
session_start ();
Ahora funcionara lo que te dije antes o eso espero
  #15 (permalink)  
Antiguo 16/05/2008, 16:29
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: duda al subir archivo en el servidor

Jaronu primero de todo gracias por tu paciencia. He realizado lo que me comentastes y tengo un problema. Me sale un Warning que pone

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started

Y me almacena en mi servidor el archivo con su nombre original

Saludos
  #16 (permalink)  
Antiguo 16/05/2008, 18:23
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: duda al subir archivo en el servidor

enseñame el codigo como re quedo,
ponlo incluso antes de un include

Pero para ayudarte mejor deberias postaer los codigos y explicar un poco el proceso que hacen y donde comienza el camino de tu variable.

Un saludo
  #17 (permalink)  
Antiguo 17/05/2008, 08:01
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: duda al subir archivo en el servidor

Pongo todo el codigo de la pagina. Estoy haciendo una pagina web de mascotas.
Donde hay un un buscador en funcion de raza y más cosas. Una vez se hace la busqueda vamos a otra pagina donde hay una tabla que muestra todos los animales que cumplen las especificaciones de la busqueda. Una vez seleccionamos uno de estos animales LLEGAMOS A ESTA PÁGINA, heredando un valor ( ID )




CODIGO

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title$>Documento sin t&iacute;tulo</title>

<style type="text/css">
<!--
body,td,th {
color: #000000;
}
body {
background-color: #FFFFFF;
}
.estilo2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #333333;
}
.estilo {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #999999;
text-align:center;

}
-->
</style>
<link rel="STYLESHEET" type="text/css" href="estilo2.css">
<style type="text/css">
<!--
.Estilo4 {
color: #FF0000;
font-weight: bold;
}
.Estilo5 {
color: #0000FF;
font-weight: bold;
}
.Estilo6 {color: #FF0000}
-->
</style>
</head>

<body>

<div id= "contenedor">

<div id="cabecera"><img src="imagenes/cabezera.jpg" width="380" height="192" alt="clickjob" border="0">


</div>

<div id="centro">

<?php // aquí está el 1er script donde recogemos el valor de ID de otra página.

if(isset($_GET['ID']))
{
session_start ();
$id=$_GET['ID']; //ahi recien vas a tomar la variable.

$_SESSION['id'] = $id; // aquí como me decias pasamos la variable en una varible sesion

}

// Conecta con la BBDD adecuada y guarda el identificador de conecion en link.
$link = mysql_connect("localhost", "root","contraseña");
mysql_select_db("mascotas", $link);

esult = mysql_query("SELECT * FROM ofertas WHERE id_oferta=' ".$id." ' ", $link);// aquí utilizamos esta variable para realizar la busqueda. Yo lo utilizo para identificar un perro y me muestre todas sus caracteristicas en esta página.


if ($row = @mysql_fetch_array($result))
{

// abre la tabla
echo "<table width='80%' align='center' border='0' bordercolor='000000' cellspacing='0' bgcolor='ffffff'> \n";
//Mostramos los nombres de las tablas

echo "<tr> \n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->name</td> \n";
}

echo "</tr> \n";
do {
echo "<tr> \n";

echo "<table width='450'>
<tr><td width='150'><strong>Nombre :</strong></td><td width='300'>".$row['Nombre']."</td></tr>
<tr><td width='150'><strong>Provincia :</strong></td><td width='300'>".$row['provincia']."</td></tr>
<tr><td><strong>Area :</strong></td><td>".$row['area']."</td></tr>
<tr><td><strong>Raza:</strong></td><td>".$row['raza']."</td></tr> </table><br><br>
<table width='600'>
<tr><td><strong>Mote</strong></td><td>".$row['mote']."</td></tr>
<tr><td width='150' valign='top'><strong>Descripción :</strong> </td><td width='450'>".$row['descripcion']."</td></tr>
</table>";


} while ($row = mysql_fetch_array($result));
echo "</table> \n";
}

else {
echo "&iexcl; ";
}
?>


Aquí empieza el segundo script que es donde no tengo la variable id

<?php


if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo

session_start(); // lo que me comentabas

$id=$_SESSION['id']; // Utilio esto para guardar el archivo con el nombre de la id.

$ruta= "carpeta/$id".$_FILES['fichero']['name'];

if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) {

echo "<b>Update realizado correctamente. Datos:</b><br>";

echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
}

// A continuación el formulario
}
?>

</tr>
</tr>
</table>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
</div>
<div id="final">
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Curriculum: <input name="fichero" type="file">
<input name="submit" type="submit" value="Upload!">
</form>
</div>
</body>
</html>


Vaya parrafada jaja GRACIAS POR TODO
  #18 (permalink)  
Antiguo 18/05/2008, 19:51
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: duda al subir archivo en el servidor

marcvilap:

Si la ruta del archivo YA subido es:
$SUBIRADIRECCION = $_SERVER['DOCUMENT_ROOT']."/archivos/";
$SUBIRADIRECCION .= "$tuarchivo";

Averigua el tipo asi:
$tipo = stristr($tuarchivo,'.');

Establece la misma ruta con nombre de archivo diferente; en este
caso llevara el nombre del $id con su respectivo tipo
$SUBIRADIRECCIONXYZ = $_SERVER['DOCUMENT_ROOT']."/archivos/";
$SUBIRADIRECCIONXYZ .= "$id.$tipo";

Le haces un rename y Ya.
rename("$SUBIRADIRECCION", "$SUBIRADIRECCIONXYZ");

En sintesis, si el archivo se llamaba marcvilap.jpp y el ID = 1234567
Ahora se llamara 1234567.jpg

Saludos
Y espero te ayude
franco
  #19 (permalink)  
Antiguo 19/05/2008, 07:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: duda al subir archivo en el servidor

del primer script, quita el sesion_start de donde lo has colocado y lo pones en la primera linea de codigo, ya sea php o html

Código PHP:
<?
session_start 
();
?>
en la primera linea

Un saludo
  #20 (permalink)  
Antiguo 19/05/2008, 12:21
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: duda al subir archivo en el servidor

ALELUYAA !!!

Muchas gracias a todos sobretodo a jaronu por tu paciencia, yo tmb soy de barcelona un dia te invito a un cubata jaja

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 07:10.