2010-02-04 24 views
25

Si subo un archivo de texto a través de un formulario, ¿es posible generar su contenido directamente desde la variable $ _FILES en lugar de guardarlo primero en el servidor? Sé que esto es un riesgo de seguridad, pero solo se ejecutará en una máquina local.PHP leer desde el archivo de texto cargado?

Cualquier consejo apreciado.

Gracias.

Respuesta

41

El archivo se guarda en el directorio temporal en el momento en que se carga, pero puede usar $_FILES['uploadedfile']['tmp_name'] para leerlo sin tener que guardarlo en un lugar permanente.

+0

Doh, estaba haciendo esto todo el tiempo, pero el HTML no era nada que fuera visible en la página. Estoy usando Chrome, así que cuando hice clic en Ver código fuente, me mostró una versión de la página cargada de nuevo, donde el archivo de texto no se había cargado :) – Dan

4

Lamentablemente, no. Al menos no a través de la variable $ _FILES. Lo siento.

EDITAR: Siempre se guarda como el archivo temporal en $ _FILES y siempre tendrá que usar ese para el contenido.

+2

Bien, bien, ¡no publicaré cuando sepa que la respuesta son malas noticias! – Teekin

+0

Esta respuesta es estrictamente cierta porque la pregunta se hizo específicamente sobre la variable $ _FILES, pero creo que las otras respuestas son correctas para lo que parece ser la publicación. – Lukos

63

Haciendo los

file_get_contents($_FILES['uploadedfile']['tmp_name']); 

es válida sin embargo, también debe comprobar para asegurarse de que el archivo fue cargado a través de un formulario y que no se han producido errores durante la carga:

if ($_FILES['uploadedfile']['error'] == UPLOAD_ERR_OK    //checks for errors 
     && is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) { //checks that file is uploaded 
    echo file_get_contents($_FILES['uploadedfile']['tmp_name']); 
} 

Un enlace útil es http://us2.php.net/manual/en/features.file-upload.php

+1

Hola, ¿por qué debería verificar el archivo a través de is_uploaded_file? ¿Hay algún problema de seguridad? ¿Qué problema puede causar? ¿Me lo puede explicar o proporcionar algún enlace para publicar? Gracias – Facedown

Cuestiones relacionadas