para - PHP-análisis de datos de formularios multiparte
formulario para mostrar datos php (7)
Estoy tratando de armar un formulario HTML POST-ed que tiene dos campos: una carga de archivos y un campo de texto. Dado que el formulario tiene un tipo multipart / form-data para la carga del archivo, no puedo acceder al campo de texto a través de la variable PHP $ _POST normal. Entonces, ¿cómo puedo obtener en el campo de texto en el formulario con PHP?
Según lo solicitado, aquí hay un código, básicamente tomado directamente de Andrew:
<html>
<body>
<form action="test2.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName" />
Image: <input type="file" name="image" />
<input type="submit" value="submit" />
</form>
</body>
</html>
<?php
echo $_POST[''imageName''];
echo "<pre>";
echo var_dump($_FILES[''image'']);
echo "</pre>";
?>
Ese es todo el archivo de prueba. Si elimino el enctype, puedo obtener los datos POST-ed, pero no el archivo, por supuesto. Con el enctype como multipart / form-data, puedo obtener el archivo, pero nada de los datos POST-ed.
Aquí está la salida con el enctype:
array(5) {
["name"]=>
string(34) "testing.png"
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(1)
["size"]=>
int(0)
}
Sin:
testing
NULL
La misma entrada exacta ambas veces.
No hay nada malo con tu código; Podría ser un problema con la configuración del servidor.
<form action="" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName">
Image: <input type="file" name="image">
<input type="submit" value="submit">
</form>
<?php var_dump($_POST, $_FILES); ?>
Script: http://sandbox.phpieceofcake.com/upload/1246558881125336.php
Fuente: http://sandbox.phpieceofcake.com/upload/1246558881125336.phps
Puede verificar si sus servicios web están funcionando bien con la extensión de cliente de Chrome Rest o subiendo datos de varias partes a través de esta aplicación: http://itunes.apple.com/us/app/rest-client/id503860664?ls=1&mt=8
Revise su límite de mensajes. Me estaba volviendo loca tratando de averiguar qué estaba causando esto. Una comprobación rápida del registro de errores de Apache mostró que la longitud del contenido de la publicación superó el límite. Después de elevar el límite, los datos de la publicación están disponibles.
Tuve el mismo problema que se muestra al principio. Inténtelo cargando un tamaño de archivo inferior a 1 MB. Si ha podido cargarlo, entonces su problema es que los valores de upload_max_filesize y post_max_size aumentan esos valores y lo intentan de nuevo. Esta fue la solución a mi problema.
[2010-02-13 10:57 UTC] sudeshkmr en yahoo dot com
Me enfrenté al mismo problema y nada funcionó. He probado en Apache 2.2, PHP 5.3 en Windows Vista. También probé en Ubuntu (Karmic) con Apache 2.2 y PHP 5.3. También probé con nGinX 0.8 y PHP 5.3.
Entonces encontré una solución. El parámetro action = "" no debe ser la página del script en la que tiene el formulario de carga de archivos. Por ejemplo, tienes una página index.php con el formulario de carga.
La acción = "upload.php" <-------- ¡Esta página debe ser diferente a la página del formulario de carga de archivos, y funciona en todas las configuraciones de PHP!
No utilizar para el parámetro de acción.
$_POST
debería funcionar bien para el campo de texto. Deberá usar $_FILES
para el archivo real. Dado el siguiente HTML:
<html>
<body>
<form action="self.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName" />
Image: <input type="file" name="image" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
Puede acceder a los campos de la siguiente manera:
<?php
echo $_POST[''imageName''];
echo "<pre>";
echo var_dump($_FILES[''image'']);
echo "</pre>";
?>