HTML Télécharger MAX_FILE_SIZE ne semble pas fonctionner
Je me demande comment est le champ caché nommé MAX_FILE_SIZE
censé fonctionner?
<form action="" method="post" enctype="multipart/form-data">
<!-- in byes must preceed file field -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
<input type="file" name="upload" />
<input type="submit" name="submit" value="Submit" />
</form>
J'ai téléchargé un 4 MO+ fichier mais je n'ai pas d'avertissement du côté client (je ne parle pas du côté serveur). Qu'est-ce MAX_FILE_SIZE
censé faire?
Mise à JOUR
OK, donc ses pour PHP pour imposer un "soft" de la limite. Mais est-il une différence entre l'utilisation et le contrôle de quelque chose comme $_FILES['upload']['size'] < 2000
dans le code?
Vous devez vous connecter pour publier un commentaire.
MAX_FILE_SIZE
est dansKO pasoctets. Vous avez eu raison, elle est exprimée en octets. Donc, pour une limite de 4 MOconvert 4MB in bytes {1024 * (1024 * 4)}
essayer:Mise à jour de 1
Comme expliqué par d'autres, vous n'obtiendrez jamais un avertissement pour cette. Il est là juste d'imposer une limite sur le côté serveur.
Mise à jour 2
Pour répondre à vos sous-question. Oui, il y a une différence, vous ne faites JAMAIS confiance à l'entrée de l'utilisateur. Si vous voulez toujours imposer une limite, vous devez vérifier la taille. Ne croyez pas ce que
MAX_FILE_SIZE
n', car il peut être modifié par un utilisateur. Donc, oui, vous devriez vérifier pour s'assurer qu'il est toujours à ou au-dessus de la taille que vous voulez qu'il soit.La différence est que si vous avez imposé une
MAX_FILE_SIZE
de 2 mo et que l'utilisateur tente de télécharger un fichier de 4 mo, une fois qu'ils atteignent à peu près le premier de 2 mo de téléchargement, le transfert va se terminer et le PHP n'acceptera plus les données de ce fichier. Il rendra compte de l'erreur sur les fichiers de tableau.Avant de commencer, s'il vous plaît laissez-moi de souligner que la taille du fichier doit être vérifié sur
le côté serveur. Si non coché sur le côté serveur, les utilisateurs malveillants peuvent remplacer votre côté client des limites, et de télécharger de gros fichiers sur votre serveur. NE PAS FAIRE CONFIANCE AUX UTILISATEURS.
J'ai un peu joué avec PHP MAX_FILE_SIZE, il semblait fonctionner seulement après que le fichier a été téléchargé, ce qui le rend hors de propos (encore une fois, utilisateur malveillant peut la remplacer assez facilement).
Le code javascript ci-dessous (testé avec Firefox et Chrome), basé sur Matthieu post, avertit l'utilisateur (le bon, innocent) et à priori, le téléchargement d'un gros fichier, un gain de trafic et le temps de l'utilisateur:
À tous ceux qui avaient été wonderstruck sur quelques fichiers facilement téléchargé et certains pas de, il pourrait être un problème de taille. Je partage ce que j'ai été coincé avec mon code PHP de ne pas le téléchargement de fichiers volumineux et j'ai gardé en supposant qu'il n'était pas télécharger des fichiers Excel. Donc, si vous êtes à l'aide de PHP et que vous voulez augmenter la limite d'upload de fichier, allez dans le php.fichier ini et d'apporter les modifications suivantes:
upload_max_filesize = 2M
être modifié pour
upload_max_filesize = 10M
post_max_size = 10M
ou de la taille nécessaire. Puis redémarrez le serveur Apache et le téléchargement va commencer par magie de travail. J'espère que ce sera de l'aide à quelqu'un.
En fait, ça ne fonctionne pas vraiment. Vous pouvez trouver une explication dans l'un des commentaires dans la page de manuel: http://www.php.net/manual/en/features.file-upload.php#74692
Réponse à la mise à jour question: la différence la plus évidente est que côté serveur, les contrôles sont fiables, côté client, les chèques ne sont pas.
C'est seulement censé envoyer les informations vers le serveur. La raison qu'il doit précéder le champ fichier, c'est qu'il doit venir avant que le fichier de charge utile en la demande pour le serveur pour être en mesure de l'utiliser pour vérifier la taille de l'upload.
Comment la valeur est utilisé sur le serveur dépend de ce que vous utilisez pour prendre soin de le télécharger. Le code est censé être conçu pour un certain télécharger le composant qui cherche spécifiquement pour cette valeur.
Il semble que la construit en charge du téléchargement en PHP est l'un pour utiliser cette valeur de champ.
PHP.net explication sur MAX_FILE_SIZE champ caché.
http://php.net/manual/en/features.file-upload.post-method.php
Il y a UN POINT dans l'introduction de MAX_FILE_SIZE client côté caché de champ de formulaire.
php.ini peut limiter la taille du fichier téléchargé. Ainsi, alors que votre script honneurs de la limite imposée par php.ini, différents formulaires HTML peut en outre limiter la taille du fichier téléchargé. Ainsi, lors du téléchargement de la vidéo, la forme peut limiter* taille maximale de 10 mo, et alors que le téléchargement de photos, les formulaires de mettre une limite de seulement 1 mo. Et dans le même temps, la limite maximale peut être réglée en php.ini de supposer 10 mo pour permettre à tous de ce.
Bien que ce n'est pas un imbécile preuve manière de dire au serveur que faire, mais elle peut être utile.
Espérons qu'il a aidé quelqu'un.