subir simple move_uploaded_file example ejemplo archivos _files php file-upload

php - simple - El campo $_FILES ''tmp_name'' no tiene ningún valor en la extensión de archivo.JPG



upload image php example (7)

Estaba haciendo un script de carga cuando probé un archivo de imagen con esta extensión .JPG, no sé cuál es la diferencia entre jpg o jpeg, pero parece que $ _FILES no reconoce este tipo de archivo.

He leído varios hilos que $ _FILES no es confiable cuando se trata de mime type, así que decidí utilizar la función tipo mime de php mime_content_type() , php''s getimagesize() , pathinfo() , aunque pathinfo devuelve un nombre de archivo y escriba, pero necesito la ruta del archivo que NO está presente, todas las funciones se pasan con $ _FILES [''file''] [''tmp_name''] como parámetros.

Así que surgió este problema cuando decidí subir un archivo de imagen, por ejemplo, sample.JPG, creo que la mayoría de estos archivos están en bruto desde la cámara <- eso es lo que creo, pero, sin embargo, lo más importante es que puedo subirlos. JPG, .jpg, jpeg, .png. todos funcionan bien excepto .JPG.

El principal problema es que el campo [''tmp_name''] en $ _FILES no tiene valores cuando se debe cargar .JPG.

Cualquiera de ustedes que haya encontrado este problema, por favor compartan su solución alternativa o "cómo lo hicieron".


Compruebe su php.ini y, en particular, esta configuración

; Maximum allowed size for uploaded files. ; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize upload_max_filesize = 6M

O haz esto en tu configuración de Apache:

<Directory "/var/www/vhosts/path/to/your/directory/import/"> php_value post_max_size 6M php_value upload_max_filesize 6M </Directory>

También diría que es pobre que PHP no reporte un error en los registros de errores si carga un archivo que es más grande que su configuración php.ini upload_max_filesize . Por ejemplo, si sube un archivo de 6MB cuando lo tiene configurado en 2M (que creo que es el predeterminado).


Enfrenté el problema con el campo $ _FILES ''tmp_name'' que no tenía ningún valor para la extensión de archivo .JPG y lo solucioné en unos pocos pasos. Estas medidas pueden ayudar a alguien en el futuro.

  1. En primer lugar, implementé la solución Switch Case ofrecida por el usuario ''staticsan''. Enlace aquí - https://.com/a/14472801/3681985 . Esta solución me ayudó a rastrear los problemas potenciales, como los parámetros en el archivo php.ini y los permisos de la carpeta.
  2. El archivo php.ini se llamó php.ini.default. Cambiar los parámetros upload_max_filesize y post_max_size no produjo ningún resultado, hasta que cambié el nombre del archivo a php.ini. Recuerde experimentar con valores de parámetros.
  3. Después de solucionar el problema del nombre del archivo, encontré un desafío con los permisos de la carpeta en la que se debe mover la imagen temporal cargada. Cambié los permisos y pude ver la imagen cargada en la carpeta.

Estaba teniendo el mismo problema y estar familiarizado principalmente con la plataforma .NET hace que te olvides de las cosas que suceden en el lado del cliente html.

Mi problema es que mi formulario tiene una entrada oculta MAX_FILE_SIZE que tiene un valor menor que los bytes equivalentes del archivo.

Tu forma debe tener esto;

Aparte de eso, su etiqueta de formulario debe incluir enctype = "multipart / form-data"

Estaba pensando que el tamaño máximo de archivo estaba en kb, pero está en bytes, gracias a alguna otra página en .

La otra razón que podría causar este problema es la configuración de php.ini que las personas han mencionado en comentarios anteriores. Debería poder post_max_size = 200M a php.ini también.

Si está desarrollando en Windows como yo, puede ver un archivo de volcado que muestra errores en C: / Windows / Temp llamado "php ** VERSION ** _ errors.log". Ayuda.


Parece que es un problema aleatorio porque mientras hacía un script para subir archivos CSV, algunos archivos CSV no tendrían problemas para cargarlos, pero en otros casos, $_FILES[''file''][tmp_name] estaría vacío.


Publicar una respuesta porque mi calificación es muy baja.

Recuerde reiniciar su servidor después de establecer el límite máximo de tamaño de archivo en su php.ini. Pasé horas sobre este tema pensando que no era un problema de tamaño de archivo, mientras tanto, me olvidé de reiniciar. Después de reiniciar todo funcionó.

Espero que esto pueda ayudar a alguien.


Si $_FILES[$field][''tmp_name''] está vacío, entonces el archivo no se ha subido. Debería ver $_FILES[$field][''error''] para ver por qué.

FWIW, y por lo que yo entiendo, el navegador proporciona el tipo mime en $_FILES[] .

Actualización : aquí hay un poco de código potted para manejar todos los errores de carga de archivos:

$message = ''Error uploading file''; switch( $_FILES[''newfile''][''error''] ) { case UPLOAD_ERR_OK: $message = false;; break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $message .= '' - file too large (limit of ''.get_max_upload().'' bytes).''; break; case UPLOAD_ERR_PARTIAL: $message .= '' - file upload was not completed.''; break; case UPLOAD_ERR_NO_FILE: $message .= '' - zero-length file uploaded.''; break; default: $message .= '' - internal error #''.$_FILES[''newfile''][''error'']; break; } if( !$message ) { if( !is_uploaded_file($_FILES[''newfile''][''tmp_name'']) ) { $message = ''Error uploading file - unknown error.''; } else { // Let''s see if we can move the file... $dest .= ''/''.$this_file; if( !move_uploaded_file($_FILES[''newfile''][''tmp_name''], $dest) ) { // No error supporession so we can see the underlying error. $message = ''Error uploading file - could not save upload (this will probably be a permissions problem in ''.$dest.'')''; } else { $message = ''File uploaded okay.''; } } }


Solo prueba esto y mira lo que pasa,

if (($_FILES[''file''][''type'']) == "image/jpg" || ($_FILES[''file''][''type'']) == "image/jpeg") { //do uploading stuff here }else{ echo ''File is not a valid JPG,JPEG''; }