Realmente quiero saber cómo voy a obtener la ruta completa del archivo cuando puedo subir un archivo en PHP?

Aquí está mi problema…

Yo soy la importación de un archivo csv en PHP. La carga de un archivo no es un problema, pero la función que se utiliza para importar archivos csv que es fgetcsv() requiere fopen. fopen es el que me esta dando un dolor de cabeza ya que requiere de una exacta filepath lo que significa que el archivo debe estar en el mismo directorio que el archivo php. ¿Qué pasa si el usuario obtiene un archivo de un directorio diferente.

He aquí mis códigos:

index.php:

<form action="csv_to_database.php" method="POST" enctype="multipart/form-data">
 <input type="file" name="csv_file" />
 <input type="submit" name="upload" value="Upload" />
</form>

csv_import.php:

<?php
 if ($_FILES['csv_file']['error'] > 0) {
  echo "Error: " . $_FILES['csv_file']['error'] . "<br />"; 
 }else{ 

  if (($handle = fopen($_FILES['csv_file']['name'], "r")) !== FALSE) {

   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

    for ($c=0; $c < count($data) ; $c++) {
     echo $data[$c] . " ";
    }
    echo "<br />";
   }
   fclose($handle);
  }
 }
?>

fopen aquí sólo se puede obtener el nombre del archivo que se pasa por la variable $_FILES['csv_file']['name']. Yo estaba tratando de obtener alguna de las funciones para obtener la ruta completa del archivo para $_FILES en internet, pero no puede encontrar ninguna.

Soy muy nuevo en el desarrollo web para pls ser paciente. Pls respuesta tan simple como sea posible… Pls ayuda…

Por favor, primero ofall proporcionar la Dirctory ruta de donde esta .Archivo CSV y donde tu esta codificación se encuentra el archivo
Si hacer un print_r($_FILES) verás que hay mucha más información que usted puede usar. Por ejemplo, $_FILES[‘csv_file’][‘tmp_name’], que contiene la totalidad (temporal) ruta de acceso del archivo cargado. fopen puede hacer cosas con esto. Véase también php.net/manual/en/features.file-upload.post-method.php
Creo que $_FILES[‘csv_file’][‘tmp_name’] muestra dónde almacenar temporalmente el archivo cargado en el servidor. Lo que yo estoy pidiendo es la ruta del archivo de la fuente.
De no obtener la ruta de acceso de la fuente. Nunca. Los navegadores filtro de seguridad/razones de privacidad. @vindia estaba señalando la funcionalidad de error en el código. Usted no puede utilizar los clientes de la ruta de acceso del archivo en el servidor de todos modos. Que los dos sistemas de ficheros diferentes, el mismo camino, no va a funcionar.
Posibles duplicados de stackoverflow.com/questions/5450713/…

OriginalEl autor Newbie Coder | 2011-04-28

3 Comentarios

  1. 6

    La ['name'] se refiere a que el nombre original del archivo en el ordenador de los usuarios. Que de ninguna utilidad para usted, en particular, porque se puede estar vacía. (O puede contener falsos valores, causando un recorrido de directorios explotar. Así que, simplemente evitarlo.)

    Que usted necesita para utilizar el ['tmp_name'] que es un servidor-ruta absoluta como /tmp/upload85728 que puede ser utilizado para fopen() o move_uploaded_file().

    OriginalEl autor mario

  2. 3

    Yo era capaz de archivo csv importado y se almacena en la base de datos mysql.

    Aquí están los códigos (en realidad es casi el mismo que el de mi pregunta, con algunos ligeros cambios con gran efecto):

    index.php:

    <form action="csv_import.php" method="POST" enctype="multipart/form-data"  >
     <input type="file" name="csv_file" />
     <input type="submit" name="upload" value="Upload" />
    </form> 

    csv_import.php:

    <?php
     if ($_FILES['csv_file']['error'] > 0) {
      echo "Error: " . $_FILES['csv_file']['error'] . "<br />"; 
     }else{ 
      if (($handle = fopen($_FILES['csv_file']['tmp_name'], "r")) !== FALSE) {
    
       $dbconn = mysql_connect("localhost", "root", "") or die("Couldn't connect to server!");
       mysql_select_db("csv_test") or die("Couldn't find database!");
    
       $ctr = 1; //used to exclude the CSV header
    
       while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if ($ctr > 1) mysql_query("INSERT INTO ninja_exer (name, village, country) VALUES ('$data[1]', '$data[2]', '$data[3]')");
        else  $ctr++;
       }
       fclose($handle);
      }
     }
    ?>

    OriginalEl autor Newbie Coder

  3. 0

    necesita definir una ruta de acceso en el archivo de configuración o dondequiera que usted desea utilizar y, a continuación, que la variable de lo que se defina, puede utilizar en su proyecto.

    i.e: define('FILE_UPLOADED_PATH','folder1/folder2/so on');

    así que después de poner este código con su ruta completa del archivo sería-

    FILE_UPLOADED_PATH.$_FILES['csv_file']['name'];

    puede utilizar el código de arriba como ejemplo.

    Gracias.

    ¿Qué pasa si el usuario carga un archivo csv no de la ruta de acceso del archivo que se especifica
    no..no..no entienden realmente lo que quiero decir.. cada vez que el usuario subir un archivo desde su sitio que el archivo se suba a su especificar la ruta.así que en el momento en que usted necesita para editar/mostrar u puede conseguir fácilmente que la espalda…eso es lo que me sugieren..gracias.
    el usuario puede cargar archivos desde cualquier lugar en el equipo, pero los archivos después de haber subido estaría en la ruta de acceso específica solamente. por lo que su hacer nuestra tarea simple.

    OriginalEl autor Chandresh

Dejar respuesta

Please enter your comment!
Please enter your name here