Foros del Web » Programando para Internet » PHP »

Dónde sube el archivo?

Estas en el tema de Dónde sube el archivo? en el foro de PHP en Foros del Web. Saludos, Me encuntro con la siguiente situación, he buscado la forma de subir archivos por aquí el foro y encontré unos scripts que me funcionaron ...
  #1 (permalink)  
Antiguo 29/10/2015, 04:11
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Dónde sube el archivo?

Saludos,

Me encuntro con la siguiente situación, he buscado la forma de subir archivos por aquí el foro y encontré unos scripts que me funcionaron bien.
Ahora bien cuando subo el archivo me dice que se ha incertado correctamente, pero no se dónde ha guardado el archivo...

Gracias de antemano!


CODIGOS USADOS:

Formulario

Código PHP:
<HTML
  <
BODY bgcolor="#E5E5E5">
    <
form action="imatge5.php" method="POST" enctype="multipart/form-data">
      <
input name="TAMANIO" type="hidden" value="600000000">
      
Introduce el fichero a subir
      <
input type="file" name="fichero"><br><br>
      <
input name="Enviar" type="submit" value="Subir">
            
     
</
form>

<
td><a href="/scripts/premo/desc5.php"><input type="button" value="Bajar"></input></a></td>

</
BODY>
</
HTML




Acción formulario

Código PHP:
<?PHP
     $fichero 
$_FILES["fichero"];
     if (
$_POST["TAMANIO"]>$_FILES["fichero"]["size"]) { 
       echo 
"<br><font color=\"#FF0000\" align=\"center\">El fichero se ha subido al servidor.</font>";
       
copy ($_FILES["fichero"]["tmp_name"],$_FILES["fichero"]["name"]);
     } 
         else {
       echo 
"<br><p color=\"#FF0000\">        El fichero es demasiado grande</p>";
     }
      
?>
  #2 (permalink)  
Antiguo 29/10/2015, 08:03
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Pues por lo que veo en el código, no le estás asignando ninguna ruta entonces supongo lo está guardando en el mismo directorio donde está el archivo php.

También puede ser que ni siquiera se suba el fichero, porque igual el mensaje de fichero subido correctamente lo estás mostrando incluso antes de copiar el archivo temporal a su ubicación definitiva.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 29/10/2015, 08:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Dónde sube el archivo?

Además lo correcto es usar move_uploaded_file(), pues copy() puede ocasionar problemas.

ommmm, por favor lee el manual, ahí se explica cómo es que debes hacer las cosas: http://php.net/manual/es/features.file-upload.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 30/10/2015, 01:53
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Hola,

Muchas gracias por los consejos, así lo haré, ya os contaré que tal!
  #5 (permalink)  
Antiguo 30/10/2015, 03:05
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Con el manual que me paso pateketrueke, me funcionó perfectamente.

Ahora quiero ir un poca más allá, me gustaria poder que cuando el usuario llene un formulario con sus datos, pueda subir un archivo.
Y que cuando se consulten las diferentes entradas hechas por diferentes usuarios (es decir diferentes filas), también se pudan descargar/ver los archivo subidos por cada usuario.

Es decir tengo la idea de que haya una columna llamada Archivos y que en esta haya un link en cada fila del listado, que cuando hagas click te muestre el archivo que habia subido el usuario correspondiente.

Gracias de nuevo!!
  #6 (permalink)  
Antiguo 30/10/2015, 05:22
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Lo que tienes que hacer es agregar un nuevo campo varchar a la base de datos llamado Archivos y cuando envíes la infomación del formulario guardes en ese campo la ruta completa al archivo, luego al mostrar los registros usas la etiqueta <a href="... Y en href colocas la ruta que guardaste en la bse de datos para que puedas ver o descargar el archivo que se subió.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #7 (permalink)  
Antiguo 30/10/2015, 05:33
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Gracias por la rapidez,

Pero no se hacer lo que dices de guardar la ruta completa al archivo cuando envio la información del formulario.
Te muestro mi codigo, haver si así ves más fácil dónde y que deberia poner para hacer lo que me comentas.

Muchas gracias


Este es mi codigo del formulario:

Código PHP:
Ver original
  1. <?php
  2.            
  3.            
  4.             require_once ('../conexion.inc.php');
  5.             $db1 = @mysql_connect($servidor,$usuario,$password) or die("Error al conectar al DBMS.");
  6.             @mysql_select_db($basedatos) or die("Error al conectar a la BD");
  7.             $IdRFQ = $_POST['txtrfq'];
  8.             $Data = $_POST['txtdata'];
  9.             $Suppliers = $_POST['txtsupplier'];            
  10.             $Price = $_POST['txtprice'];  
  11.             $Cry2 = $_POST['txtcry2'];
  12.             $MOQ = $_POST['txtmoq'];
  13.             $Volume = $_POST['txtvolume'];        
  14.             $Investment = $_POST['txtinvestment'];
  15.             $Cry = $_POST['txtcry'];        
  16.             $Timing = $_POST['txttiming'];
  17.              
  18.             $Incoterms = $_POST['txtincoterms'];
  19.             $Comments = $_POST['txtcomments'];
  20.             $Customer = $_POST['txtcustomer'];
  21.              $Categoria = $_POST['txtcategoria'];
  22.            
  23.            
  24.  
  25.  
  26. function execute( $Data, $Suppliers, $Price, $Cry2, $MOQ, $Volume, $Investment, $Timing, $Cry, $Incoterms, $Customer, $Categoria)
  27. {
  28. $q1= "INSERT INTO rfq (idrfq, data, suppliers, price, cry2, moq, volume, investment, timing, cry, incoterms, rm part nombre)
  29. values ('$IdRFQ', $Data', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Timing', '$Cry', '$Incoterms')";
  30. $resultquery = mysql_query($q1);
  31. $errores = mysql_errno();
  32.  
  33.  
  34.  
  35.  
  36.            
  37.            
  38.             mysql_close();
  39.         ?>
  40.        
  41.       <?php}
  42. // En versiones de PHP anteriores a la 4.1.0, debería utilizarse $HTTP_POST_FILES en lugar
  43. // de $_FILES.
  44.  
  45. $dir_subida = 'C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\subidas\S';
  46. $fichero_subido = $dir_subida . basename($_FILES['fichero_usuario']['name']);
  47.  
  48. echo '<pre>';
  49. if (move_uploaded_file($_FILES['fichero_usuario']['tmp_name'], $fichero_subido)) {
  50.     echo "El fichero es válido y se subió con éxito.\n";
  51. } else {
  52.     echo "¡Posible ataque de subida de ficheros!\n";
  53. }
  54.  
  55. echo 'Más información de depuración:';
  56. print_r($_FILES);
  57.  
  58. print "</pre>";
  59.  
  60. ?>
  #8 (permalink)  
Antiguo 30/10/2015, 05:48
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

La ruta completa del archivo la tienes en la variable $fichero_subido entonces estas son las cosas que tienes que hacer:

1. Determinar si el usuario va a poder subir uno o varios archivos.
1.1. Si son varios archivos debes crear una nueva tabla donde tengas un campo relacionado (puede ser idrfq) con la tabla rfq.
1.2. Si es 1 solo archivo bastaría con agregar un campo al final de la tabla rfq que se llame Archivo y sea de tipo varchar.
2. Guardar el contenido de la variable $fichero_subido en el campo Archivo. Para esto tienes dos opciones:
2.1. Ejecutas primero el código que se encarga de subir el archivo al servidor para que genere la variable $fichero_subido y luego la puedas poner en este insert:

Código PHP:
Ver original
  1. $q1= "INSERT INTO rfq (idrfq, data, suppliers, price, cry2, moq, volume, investment, timing, cry, incoterms, rm part nombre)
  2. values ('$IdRFQ', $Data', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Timing', '$Cry', '$Incoterms')";
2.2. O puedes dejar el código como está, cuando agregues el campo Archivo a la base de datos le indicas que acepte NULL, insertas los datos a la base de datos como lo estás haciendo hasta ahora y luego de que termines de subir la imagen y si todo salió bien colocas aquí:

Código __default:
Ver original
  1. echo "El fichero es válido y se subió con éxito.\n";

Antes del echo un UPDATE al registro que acabaste de ingresar y actualizas el campo Archivo ingresando el valor de la variable $fichero_subido.

Analiza qué es lo que más te conviene y haz los cambios necesarios y cualquier cosa comentas.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #9 (permalink)  
Antiguo 30/10/2015, 06:15
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Muchisimas gracias por la explicación paso a paso y tan detallada!

Pero no acabo de conseguir-lo me sale esto una vez envio el formulario:
'; if (move_uploaded_file($_FILES['fichero_usuario']['tmp_name'], $fichero_subido)) { echo "El fichero es válido y se subió con éxito.\n"; } else { echo "¡Posible ataque de subida de ficheros!\n"; } echo 'Más información de depuración:'; print_r($_FILES); print ""; ?>


Código formulario modificado

Código PHP:
Ver original
  1. <?php}
  2. // En versiones de PHP anteriores a la 4.1.0, debería utilizarse $HTTP_POST_FILES en lugar
  3. // de $_FILES.
  4.  
  5. $dir_subida = 'C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\subidas\S';
  6. $fichero_subido = $dir_subida . basename($_FILES['fichero_usuario']['name']);
  7.  
  8. echo '<pre>';
  9. if (move_uploaded_file($_FILES['fichero_usuario']['tmp_name'], $fichero_subido)) {
  10.     echo "El fichero es válido y se subió con éxito.\n";
  11. } else {
  12.     echo "¡Posible ataque de subida de ficheros!\n";
  13. }
  14.  
  15. echo 'Más información de depuración:';
  16. print_r($_FILES);
  17.  
  18. print "</pre>";
  19.  
  20. ?>  
  21.  
  22.         <?php}
  23.            
  24.            
  25.             require_once ('../conexion.inc.php');
  26.             $db1 = @mysql_connect($servidor,$usuario,$password) or die("Error al conectar al DBMS.");
  27.             @mysql_select_db($basedatos) or die("Error al conectar a la BD");
  28.             $IdRFQ = $_POST['txtrfq'];
  29.             $Data = $_POST['txtdata'];
  30.             $Suppliers = $_POST['txtsupplier'];            
  31.             $Price = $_POST['txtprice'];  
  32.             $Cry2 = $_POST['txtcry2'];
  33.             $MOQ = $_POST['txtmoq'];
  34.             $Volume = $_POST['txtvolume'];        
  35.             $Investment = $_POST['txtinvestment'];
  36.             $Cry = $_POST['txtcry'];        
  37.             $Timing = $_POST['txttiming'];
  38.              
  39.             $Incoterms = $_POST['txtincoterms'];
  40.             $Comments = $_POST['txtcomments'];
  41.              
  42.            
  43.            
  44.            
  45.  
  46.  
  47. function execute( $Data, $Suppliers, $Price, $Cry2, $MOQ, $Volume, $Investment, $Timing, $Cry, $Incoterms, $fichero_subido)
  48. {
  49. $q1= "INSERT INTO rfq (idrfq, data, suppliers, price, cry2, moq, volume, investment, timing, cry, incoterms, archivo)
  50. values ('$IdRFQ', $Data', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Timing', '$Cry', '$Incoterms', $fichero_subido)";
  51. $resultquery = mysql_query($q1);
  52. $errores = mysql_errno();
  53.  
  54.  
  55.  
  56.  
  57.            
  58.            
  59.             mysql_close();
  60.         ?>
  #10 (permalink)  
Antiguo 30/10/2015, 06:26
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Primero que todo una pregunta: para qué le pones esa llave de cierre a la etiqueta php?

Código PHP:
Ver original
  1. <?php}

Quita ese } del primer <?php eso es lo que te genera que se vea el código php escrito en pantalla.

Segundo, de todo lo que te escribí qué has hecho aparte de ejecutar primero el código de subir el archivo? Porque no veo que hayas hecho nada más.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]

Última edición por chronos682; 30/10/2015 a las 06:32
  #11 (permalink)  
Antiguo 30/10/2015, 06:48
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

He provado las dos opciones que me comentaste,

Con la primera opcion si saco el } me dice:
Parse error: syntax error, unexpected end of file in C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\premo\EmpCrear.php on line 84

Y lo que he hecho ha sido poner el campo archivo a la BBDD, lo de subir el código y luego he puesto el $fichero_subido al InsertInto:

Código PHP:
Ver original
  1. function execute( $Data, $Suppliers, $Price, $Cry2, $MOQ, $Volume, $Investment, $Timing, $Cry, $Incoterms, $fichero_subido)
  2. {
  3. $q1= "INSERT INTO rfq (idrfq, data, suppliers, price, cry2, moq, volume, investment, timing, cry, incoterms, archivo)
  4. values ('$IdRFQ', $Data', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Timing', '$Cry', '$Incoterms', $fichero_subido)";
  5. $resultquery = mysql_query($q1);
  6. $errores = mysql_errno();



Con la segunda opción no tengo muy claro que poner en el update, asi que creo que no lo he hecho muy bien cuando lo he probado.

Muchas gracias!!
  #12 (permalink)  
Antiguo 30/10/2015, 06:58
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Perdona,
ya me funciona la opcion 1 en principio, ahora no soy capaz de linkear el archivo/descargar-lo, con esto voy muy perdido...

Tengo el siguiente código para hacer la descarga (lo encontré por el foro...):

Código PHP:
Ver original
  1. <?php
  2. $enlace = $Simages."\data\localweb\subidas".$IdRFQ;
  3. header ("Content-Disposition: attachment; filename=".$IdRFQ."png");
  4. header ("Content-Type: application/octet-stream");
  5. header ("Content-Length: ".filesize($enlace));
  6. readfile($enlace);
  7. ?>
  #13 (permalink)  
Antiguo 30/10/2015, 09:00
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Si lo que quieres es mostrar algo como esto en una tabla:

Id - Nombre - Apellido - Archivo
1 - Jose - Perez - miarchivo.pdf

Es solo un ejemplo, si digamos tú quieres mostrar todos los datos ingresados en el registro y al final un link que vaya al archivo, el código que pusiste arriba no te va a servir. Lo que debes hacer es al mismo tiempo que haces el select para traer toda la información de la BD ahí mismo lees el campo archivo, lo cargas en una variable y se la pones a la etiqueta <a> como href. P ej:

Código PHP:
Ver original
  1. $q1 = "SELECT * FROM rfq"
  2. ...
  3. ...
  4. ...
  5. $archivo = $row['archivo'];
  6. echo "<a href='{$archivo}'>Descargar</a>";

Esa es la idea. Si puedes coloca el código con el que muestras la información de la base de datos para orientarte.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #14 (permalink)  
Antiguo 02/11/2015, 02:05
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Hola chronos682,

Gracias, ahora estoy probando, aunque no tengo muy claro dónde poner-lo.

El código de la consulta es el siguiente:

Código PHP:
Ver original
  1. <?php require_once ('../conexion.inc.php');?>
  2.     <?php include '../header.php';?>
  3.  
  4.                 <center>
  5.  
  6.                     <table border="1" bordercolor="FFFFF" align="center"  bgcolor="#A9E2F3" >
  7.                        
  8.         <td align="left"><strong>Id</strong></td>                
  9.         <td align="left"><strong>Data</strong></td>
  10.         <td align="left"><strong>Suppliers</strong></td>
  11.         <td align="left"><strong>Project Part Number</strong></td>
  12.         <td align="left"><strong>RM Part Number</strong></td>
  13.         <td align="left"><strong>Price</strong></td>
  14.         <td align="left"><strong>Cry2</strong></td>
  15.         <td align="left"><strong>MOQ</strong></td>
  16.         <td align="left"><strong>Volume</strong></td>
  17.         <td align="left"><strong>Delete</strong></td>
  18.         <td align="left"><strong>Modify</strong></td>
  19.  
  20.  
  21.  
  22.  
  23.  
  24. </script>
  25.  
  26.          <?php 
  27.  
  28.            
  29.             require_once ('../conexion.inc.php');
  30.             $db1 = @mysql_connect($servidor,$usuario,$password) or die("Error al conectar al DBMS.");
  31.             @mysql_select_db($basedatos) or die("Error al conectar a la BD");
  32.  
  33.            
  34.              
  35.  
  36.             $query = "Select * from rfq ";
  37.             $result =mysql_query($query,$db1);
  38.      
  39.                
  40.   while ($fila = mysql_fetch_assoc($result)) {
  41.                             echo("\n                                <tr>
  42.  
  43.                                    <td>".$fila['IdRFQ']."</td>
  44.  
  45.                                    <td>".$fila['Data']."</td>
  46.                                      
  47.                                    <td>".$fila['Suppliers']."</td>
  48.  
  49.                                    <td>".$fila['Project Part Nombre']."</td>
  50.  
  51.                                    <td>".$fila['RM Part Number']."</td>
  52.  
  53.                                    <td>".$fila['Price']."</td>
  54.  
  55.                                    <td>".$fila['Cry2']."</td>
  56.  
  57.                                    <td>".$fila['MOQ']."</td>
  58.  
  59.                                    <td>".$fila['Volume']."</td>
  60.  
  61.  
  62.  
  63.  
  64.  
  65.                                    
  66.                                    <td><a href='EmpEliminar.php?IdRFQ=".$fila['IdRFQ']."'>Delete</a></td>
  67.  
  68.  
  69.                                    <td><a href='EmpFrmModificar.php?IdRFQ=".$fila['IdRFQ']."'>Modify</a></td>
  70.  
  71.  
  72.                                    <td><a href='Desc.php?IdRFQ=".$fila['IdRFQ']."'>File</a></td>
  73.  
  74.                                    
  75.                                </tr>") ;
  76.                         }
  77.                        
  78.                    echo "</table></center>";
  79. mysql_close($link);
  80. ?>
  #15 (permalink)  
Antiguo 02/11/2015, 09:27
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Reemplaza esto:

Código PHP:
Ver original
  1. <td><a href='Desc.php?IdRFQ=".$fila['IdRFQ']."'>File</a></td>

Por esto:
Código PHP:
Ver original
  1. <td><a href='".$fila['archivo']."'>Ver archivo</a></td>
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]

Última edición por chronos682; 02/11/2015 a las 09:41
  #16 (permalink)  
Antiguo 03/11/2015, 02:18
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Saludos y gracias

Esto lo habia probado, pero no me funciona. Y no entiendo el por qué, ya que si pongo el ratón encima del link: Ver archivo. Me dice que se abrirá el archivo que toca en la carpeta que toca. Pero cuando hago click no se abre nada... Puede ser que sea porqué la IdRFQ no tiene ningún valor?

Muchisimas gracias!!!
  #17 (permalink)  
Antiguo 03/11/2015, 09:08
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Dónde sube el archivo?

Cual IdRFQ si ahí no se utiliza. Puede ser más bien que no tengas almacenada correctamente la ruta del archivo en el campo archivo de la base se datos. Prueba haciendo var_dump del variable $fila['archivo'] a ver que te muestra.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #18 (permalink)  
Antiguo 04/11/2015, 02:48
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Hola de nuevo,

Haciendo var_dump del variable $fila['archivo'] me sale NULL, he mirado la ruta que sigue y me parece que está bien.

Y cuando mantengo el cursor encima del link me sale:
file:///C:/Archivos de programaEasyPHP=DevServer14.1VC9datalocalwebsubida sSimagen.jpg


Muchas gracias!!
  #19 (permalink)  
Antiguo 04/11/2015, 03:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Dónde sube el archivo?

Hola ommmm,

Cita:
Iniciado por ommmm Ver Mensaje
Y cuando mantengo el cursor encima del link me sale:
file:///C:/Archivos de programaEasyPHP=DevServer14.1VC9datalocalwebsubida sSimagen.jpg
Si te fijas, te faltan las /, no creo que sea todo una carpeta... y el hecho de que var_dump te salga NULL, es porque no te está trayendo nada de la base de datos.
  #20 (permalink)  
Antiguo 04/11/2015, 04:07
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Gracias rbczgz

Com hago para que me salgan las /, porqué en el script estan puestas.
Y el tema de que no trae nada de la BBDD, no entiendo por qué no lo hace, si me dice que se ha enviado correctamente, y en la carpeta correspondiente hay el documento que he subido.


Adjunto los códigos, a ver si ayudan. Muchas gacias de nuevo!!



CODIGO que hay en el formulario, que te lleva al EmpCrear.php

Código PHP:
Ver original
  1. <!-- MAX_FILE_SIZE debe preceder al campo de entrada del fichero -->
  2.     <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
  3.     <!-- El nombre del elemento de entrada determina el nombre en el array $_FILES -->
  4.     Enviar este fichero: <input name="fichero_usuario" type="file" />



CODIGO EmpCrear.php

Código PHP:
Ver original
  1. <?php
  2. // En versiones de PHP anteriores a la 4.1.0, debería utilizarse $HTTP_POST_FILES en lugar
  3. // de $_FILES.
  4.  
  5. $dir_subida = 'C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\subidas\S';
  6. $fichero_subido = $dir_subida . basename($_FILES['archivo']['name']);
  7.  
  8. echo '<pre>';
  9. if (move_uploaded_file($_FILES['archivo']['tmp_name'], $fichero_subido)) {
  10.     echo "El fichero es válido y se subió con éxito.\n";
  11. } else {
  12.     echo "¡Posible ataque de subida de ficheros!\n";
  13. }
  14.  
  15. echo 'Más información de depuración:';
  16. print_r($_FILES);
  17.  
  18. print "</pre>";
  19.  
  20.  
  21. ?>
  22.      <?php
  23.            
  24.            
  25.             require_once ('../conexion.inc.php');
  26.             $db1 = @mysql_connect($servidor,$usuario,$password) or die("Error al conectar al DBMS.");
  27.             @mysql_select_db($basedatos) or die("Error al conectar a la BD");
  28.             $IdRFQ = $_POST['txtidrfq'];
  29.             $Data = $_POST['txtdata'];
  30.            
  31.             $Suppliers = $_POST['txtsupplier'];            
  32.             $Price = $_POST['txtprice'];  
  33.             $Cry2 = $_POST['txtcry2'];
  34.             $MOQ = $_POST['txtmoq'];
  35.             $Volume = $_POST['txtvolume'];        
  36.             $Investment = $_POST['txtinvestment'];
  37.             $Cry = $_POST['txtcry'];        
  38.             $Timing = $_POST['txttiming'];
  39.              
  40.             $Incoterms = $_POST['txtincoterms'];
  41.             $Comments = $_POST['txtcomments'];
  42.          
  43.            
  44.            
  45.            
  46.            
  47.            
  48.  
  49.  
  50.  
  51. $q1= "INSERT INTO rfq (idrfq, data, suppliers, price, cry2, moq, volume, investment, timing, cry, incoterms, archivo)
  52. values ('$IdRFQ','$Data', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Timing', '$Cry', '$Incoterms', '$fichero_subido')";
  53. $resultquery = mysql_query($q1);
  54. $errores = mysql_errno();
  55.  
  56.  
  57.  
  58.  
  59.            
  60.            
  61.             mysql_close();
  62.         ?>
  #21 (permalink)  
Antiguo 04/11/2015, 07:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Dónde sube el archivo?

Jamás deberías usar \ para las rutas si usas Windows, porque ese precisamente es el problema, la barra de escape \ es especial y arruina tu ruta inicial.

Código PHP:
Ver original
  1. // MAL
  2. $dir_subida = 'C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\subidas\S';
  3.  
  4. // BIEN
  5. $dir_subida = 'C:\\Archivos de programa\\EasyPHP-DevServer-14.1VC9\\data\\localweb\\subidas\\S';
  6.  
  7. // MEJOR
  8. $dir_subida = 'C:/Archivos de programa/EasyPHP-DevServer-14.1VC9/data/localweb/subidas/S';

Si vas a usar \ como separador de directorios debes escapar la barra \\ para evitar que rompa la cadena, o mejor aún, usar la barra / pues PHP entiende perfectamente la ruta y la corregirá para ser usada en Windows.

Otro error grave que cometes es que guardas la ruta física completa del archivo: tremendo error.

¿Por qué es un error?

Porque para poder descargarse un archivo debe ser accedido a través del servidor web, usando una ruta a partir de la raíz del sitio, no una ruta física porque es imposible descargarla.

Lo único que debes guardar es la ruta relativa desde la raíz del sitio hacia el archivo, de otra forma siempre obtendrás enlaces rotos e inútiles.

O mejor aún, sólo guardas el nombre del archivo y porque si ya sabes que la ruta es la misma ¿para qué guardar información de más?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #22 (permalink)  
Antiguo 05/11/2015, 02:25
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Saludos pateketrueke y muchas gracias por la detallada explicación,

Pero debo confesar que lo de cambiar la ruta física no lo acabo de entender.
Es decir la ruta relativa desde la raiz no se a que te refieres y tampoc entiendo la ultima frase, porqué yo ya guardo el nombre del archivo, pero debo especificar-le dónde quiero guardar-lo no? Por eso pongo la ruta física que debo cambiar por una relativa que no se como debe ser.


Muchas gracias de nuevo por vuestro tiempo!!
  #23 (permalink)  
Antiguo 05/11/2015, 08:16
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Dónde sube el archivo?

Hola ommmm,

La ruta física en tu caso se refiere a:

C:/Archivos de programa/EasyPHP-DevServer-14.1VC9/data/localweb/subidas/S

Y lo que te dice pateketrueke es que es mejor guardar en la BD solo el nombre del archivo puesto que la ruta siempre será la misma para todos, con lo que es mejor añadirla en la programación y así, además de no guardar información innecesaria en la BD, si la tienes que cambiar, por ejemplo, al subir tu proyecto al servidor, no necesitarás cambiarla en cada registro, solo en la programación.

La ruta a la raíz del sitio se refiere, por ejemplo en el caso de que tu sitio esté en la carpeta "localweb", la ruta debe ser desde ahí, es decir "/localweb/subidas/S"

Espero que se entienda.
  #24 (permalink)  
Antiguo 06/11/2015, 06:28
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Dónde sube el archivo?

Gracias por la aclaración rbczgz,

La entendí a la perfección, pero sigo sin poder descargar el archivo...

A ver si alguien tiene alguna otra idea, si no estoy probando otra forma de hacer-lo, pero tampoco cosnigo que funcione.

Saludos!!

Etiquetas: formulario, html, sube
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:42.