2010-05-30 7 views
20

Pourquoi un fichier ne peut-il être que partiellement téléchargé?Pourquoi un fichier ne peut-il être que partiellement téléchargé?

J'améliore la gestion des erreurs dans mon script de téléchargement de fichiers PHP et j'essaie de comprendre comment gérer correctement UPLOAD_ERR_PARTIAL. Dois-je demander à l'utilisateur d'essayer à nouveau de télécharger le fichier, ou devrais-je l'informer qu'il existe un problème plus grave qui l'empêche de télécharger un fichier potentiellement légitime?

Répondre

5

Pourquoi pourrait un fichier que partiellement téléchargé ?

Ceci est généralement causé par l'annulation du téléchargement par l'utilisateur.

Dois-je inviter l'utilisateur à essayer télécharger à nouveau le fichier, ou devrais-je les informer qu'il ya un plus grave problème qui empêche les de télécharger un fichier légitime peut-être ?

Vous devez les inciter à essayer de nouveau et si les problèmes continuent de contacter les propriétaires du site, y compris le plus de détails possible.

+0

Comment devrions-nous gérer ce cas du côté client avec JS et du côté serveur avec PHP? Je veux dire, si l'utilisateur commence un téléchargement d'un fichier puis clique sur un bouton d'annulation sur la page pendant que le fichier est encore en train d'être téléchargé, je peux appeler '.abort()' comment PHP recevra-t-il les informations annulées? télécharger? – tonix

24

UPLOAD_ERR_PARTIAL est indiqué lorsque la limite de mime est introuvable après les données de fichier. Une cause possible de ceci est que le téléchargement a été annulé par l'utilisateur (pressé ESC, etc.).

Je pense qu'il suffit d'informer l'utilisateur que le fichier n'est que partiellement téléchargé et qu'une nouvelle tentative corrigera le problème.

+8

+1 pour clarifier "lorsque la limite du mime n'est pas trouvée après les données du fichier" – Seb

+0

@Seb Totalement +1 pour celui-là aussi. Avait un problème similaire et cette petite note m'a amené à la source. :) –

+0

Dans mon cas, j'ai oublié le «-» de tête sur la dernière limite (dans ce cas-ci). Leçon apprise :-) – ninetwozero

2

Eh bien, le téléchargement de fichiers pourrait être interrompue par:

d'espace dans la destination

interruption de connexion

fichier Damage

Mauvais nom

extension de mauvais

etc ...

Le mieux que vous pouvez faire est de vérifier et protéger le processus de téléchargement avec Does vérifications avant l'envoi en fait le fichier sur le serveur ...

La première fois que je l'ai fait un script d'upload de fichier, je 1 ligne de code, maintenant, le même script apparaît comme une page Web;)

ÉDITÉ (par exemple pour contrôler l'extension et la taille du fichier):

if ((

($file_up["type"] == "image/gif") || 

($file_up["type"] == "image/jpeg") || 

($file_up["type"] == "image/jpg") || 

($file_up["type"] == "image/pjpeg") || 

($file_up["type"] == "image/bmp") || 

($file_up["type"] == "image/tiff") || 

($file_up["type"] == "image/png")) && 

($file_up["size"] < 1050000)) 

{ 

    code if all ok... 


} 
+2

mauvaise extension? eu un exemple? –

+0

humm ... oui, imaginez que votre entrée ne fonctionne qu'avec des images et que l'utilisateur essaie de télécharger un document, si ce n'est censé être que des images, vous devriez refuser toute autre extension de fichier (voir ma réponse sous le commentaire d'édition ... – Zuul

+3

La question est de savoir comment un nom de fichier/extension causerait un UPLOAD_ERR_PARTIAL? – webbiedave

8

C'est un ancien poste, mais j'ai eu un problème aléatoire de UPLOAD_ERR_PARTIAL, et après ma solution.

Le problème est qu'après le téléchargement 2/3 j'ai obtenu une erreur de UPLOAD_ERR_PARTIAL, sans aucune interruption par le client.

Mon problème était lié au serveur Keep-Alive.

I résolu par l'insertion, à la fin du script PHP pour télécharger

header ("Connection: close"); 

qui force la fermeture de la connexion. Cela a résolu mon problème.

J'espère que quelqu'un peut vous aider.

Merci à cette LINK

+1

A travaillé pour moi! J'ai passé des heures à penser que mon script échouait/flakey semble que c'était le serveur. – Treemonkey

+0

@Treemonkey heureux d'être utile ;-) –

+0

Dupliqués ici: http://stackoverflow.com/questions/12425394/post-data-is-missing-when-posting-the-same-data-in-rapid-sequence –

1

Cela peut aider certaines personnes, mais j'ai eu le même problème. Ma solution a été de désinstaller libapache2-mod-php5filter et le remplacer par le libapache2-mod-php5

+1

Je vous remercie! Rien d'autre n'a fonctionné pour moi. Cela a fait! –

0

classique J'ai un même problème et était lié avec le paquet libapache2-mod-php5filter, je retire la fin p et problème. J'espère que quelqu'un peut vous aider.

+1

@yellowantphil ressemble à une réponse borderline à moi –

Questions connexes