Saltar al contenido

¿Por qué $_FILES estaría vacío al cargar archivos en PHP?

Nuestros investigadores estrellas han agotado sus depósitos de café, por su búsqueda día y noche por la solución, hasta que Javier encontró el resultado en Gitea así que en este momento la comparte contigo.

Solución:

Aquí hay una lista de verificación para cargar archivos en PHP:

  1. Compruebe php.ini para:
    file_uploads = On
    post_max_size = 100M
    upload_max_filesize = 100M

    • Es posible que necesite usar .htaccess o .user.ini si está en un alojamiento compartido y no tiene acceso a php.ini.
    • Asegúrese de que está editando el archivo ini correcto: use el phpinfo() función para verificar que su configuración realmente se está aplicando.
    • También asegúrese de no escribir mal los tamaños, debería ser 100Mno100MB.
  2. Asegúrese de que su

    la etiqueta tiene la enctype="multipart/form-data" attribute. Ninguna otra etiqueta funcionará, tiene que ser su etiqueta FORM. Vuelva a comprobar que es deletreado correctamente. Vuelva a verificar que los datos de varias partes/formularios estén rodeados de COMILLAS RECTAS, no de comillas tipográficas pegadas desde Word O desde el blog de un sitio web (¡WordPress convierte las comillas rectas en comillas angulares!). Si tiene varios formularios en la página, asegúrese de que ambos tengan este attribute. Escríbalas manualmente o pruebe con comillas simples simples escritas manualmente.

  3. Asegúrese de no tener dos campos de archivo de entrada con el mismo name attribute. Si necesita admitir varios, coloque corchetes al final del nombre:

    
    
    
  4. Asegúrese de que sus directorios tmp y upload tengan los permisos de lectura y escritura correctos. La carpeta de carga temporal se especifica en la configuración de PHP como upload_tmp_dir.

  5. Asegúrese de que el destino de su archivo y los directorios tmp/upload no tengan espacios.

  6. Asegúrate de que todo

    ‘s en su página tienen

    cerrar etiquetas.

  7. Asegúrese de que su etiqueta FORM tenga method="POST". Las solicitudes GET no admiten cargas de datos de varias partes o formularios.

  8. Asegúrese de que la etiqueta de entrada de su archivo tenga un NOMBRE attribute. una identificación attribute ¡No es suficiente! IDENTIFICACIÓN attributes son para uso en el DOM, no para cargas útiles POST.

  9. Asegúrese de no estar usando Javascript para deshabilitar su campo de envío

  10. Asegúrese de no anidar formularios como

  11. Verifique su estructura HTML en busca de etiquetas superpuestas o no válidas como

  12. También asegúrese de que el archivo que está cargando no tenga caracteres no alfanuméricos.

  13. Una vez, pasé horas tratando de averiguar por qué me estaba pasando esto de repente. Resultó que había modificado algunas de las configuraciones de PHP en .htaccessy uno de ellos (aún no estoy seguro de cuál) estaba causando que la carga fallara y $_FILES estar vacío

  14. Podría intentar evitar los guiones bajos (_) en el name="" attribute de El etiqueta

  15. Intente cargar archivos muy pequeños para determinar si se trata de un problema de tamaño de archivo.

  16. Comprueba el espacio disponible en tu disco. Aunque es muy raro, se menciona en este comentario de la página del Manual de PHP:

    Si los $_ARCHIVOS array de repente se vacía misteriosamente, aunque su formulario parece correcto, debe verificar el espacio en disco disponible para su partición de carpeta temporal. En mi instalación, todas las cargas de archivos fallaron sin previo aviso. Después de mucho rechinar de dientes, intenté liberar espacio adicional, después de lo cual la carga de archivos volvió a funcionar repentinamente.

  17. Asegúrese de no enviar el formulario a través de una solicitud POST de AJAX en lugar de una solicitud POST normal que hace que una página se vuelva a cargar. Revisé todos y cada uno de los puntos de la lista anterior y finalmente descubrí que la razón por la cual mi variable $_FILES estaba vacía era que estaba enviando el formulario mediante una solicitud AJAX POST. Sé que también hay métodos para cargar archivos usando ajax, pero esta podría ser una razón válida por la cual su $_FILES array esta vacio.

Fuente para algunos de estos puntos:
http://getluky.net/2004/10/04/apachephp-_files-array-misteriosamente-vacío/

En cuanto al HTML, parece que ha configurado esa parte correctamente. ya tienes el enctype="multipart/form-data" que es muy importante tener en el formulario.

en cuanto a su php.ini configuración, a veces en sistemas múltiples php.ini los archivos existen. Asegúrese de que está editando el correcto. Sé que dijiste que habías configurado tu php.ini archivo para tener cargas de archivos, pero ¿también configuró su upload_max_filesize y post_max_size ser más grande que el archivo que está tratando de cargar? Entonces deberías tener:

file_uploads = On; sounds like you already did this
post_max_size = 8M; change this higher if needed
upload_max_filesize = 8M; change this higher if needed

¿Su directorio: "c:wamptmp" tiene permisos de lectura y escritura? ¿Recordó reiniciar Apache después de realizar la php.ini ¿cambios?


Es importante agregar enctype="multipart/form-data" a tu formulario, ejemplo

Select image to upload:

Puntuaciones y reseñas

Si te gustó nuestro trabajo, eres capaz de dejar una crónica acerca de qué le añadirías a este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *