2011-03-27 15 views
10

Tengo un formulario (HTML, PHP) que le permite al usuario cargar un archivo para actualizar la base de datos (MySQL) con los registros en el archivo cargado (específicamente .csv). Sin embargo, en phpscript, solo puedo obtener el nombre de archivo y no la ruta completa del archivo especificada. fopen() falla debido a esta razón. ¿Puede alguien decirme cómo puedo trabajar para encontrar el camino completo?Obteniendo la RUTA completa del archivo cargado - PHP

HTML Code:

<html> 
<head> 
</head> 
<body> 
<form method="POST" action="upload.php" enctype="multipart/form-data"> 
    <p>File to upload : <input type ="file" name = "UploadFileName"></p><br /> 
    <input type = "submit" name = "Submit" value = "Press THIS to upload"> 
</form> 
</body> 
</html> 

Script PHP:

<?php 
    ..... 
...... 
    $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory 
?> 
+0

esto es útil buena pregunta. –

Respuesta

25

name se refiere al nombre del archivo en el lado del cliente. Para obtener el nombre de archivo (incluyendo la ruta completa) en el lado del servidor, es necesario utilizar tmp_name:

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3

utilizar el siguiente código,

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3
$target='uploads/'.basename($_FILES['UploadFileName']['name']); 

if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) { 

    //Insert into your db 

    $fp = fopen($target, "r"); 
} 
2

escribí como esto :

$filePath = realpath($_FILES["file"]["tmp_name"]); 

Esto me dio la ruta completa al archivo cargado en PHP. Si encuentra un problema 0 bytes en el archivo de descarga, basta con modificar el contenido de esta línea-longitud como esto

header("Content-Length: ".filesize($filePath)); 

Donde $ rutaArchivo debe ser ruta absoluta para presentar no sólo presentar mango.

Cuestiones relacionadas