2010-08-25 12 views
5

En essayant de trouver un logiciel pour m'aider à télécharger de très gros fichiers (> 200mb). Je veux seulement télécharger un seul fichier, pas de multi-options. Aussi je voudrais une barre de progression simple si possible.Télécharger un fichier Fichiers volumineux PHP/AJAX

J'ai rencontré http://pixeline.be/experiments/jqUploader/ qui est littéralement ce dont j'ai besoin, mais il a une limite de 100 Mo par fichier, car il utilise le flash.

Est-ce que quelqu'un sait quelque chose d'autre qui est similaire à cela, mais peut gérer des fichiers plus volumineux?

thx

Répondre

1

Une autre solution populaire est http://www.swfupload.org/, mais je pense qu'il peut souffrir de la limite de 100Mo. D'après mes recherches, il semble que pour télécharger de gros fichiers, il n'y a pas d'autre choix que d'augmenter les valeurs de upload_max_filesize, post_max_size et max_execution time. Je me demande juste quelles sont les implications pour la sécurité d'avoir post_max_size à, disons, 500M? Ce n'est pas la question de la bande passante qui me préoccupe - ce sont les attaques de DoS qui pourraient survenir en permettant aux attaquants d'envoyer des requêtes POST aléatoires de 500M au serveur. La meilleure solution de contournement que je peux penser pour ce problème consiste à envoyer des téléchargements à un serveur différent.

Il y a une bonne discussion sur la question ici:

http://aaronwinborn.com/blogs/aaron/how-handle-large-file-uploads

Si des pirates Apache là-bas peuvent faire la lumière sur les implications de sécurité d'avoir une valeur vraiment importante pour post_max_size qui serait grand .

+1

Apache lui-même ne se soucie pas vraiment de la taille des fichiers, des choses modulo comme les limites 31/32bit (2.1/4.2gig). Mais si vous avez une très grande limite de publication, il est possible d'attacher tous les enfants disponibles dans le pool de connexion avec des téléchargements de longue durée et DOS la machine (ainsi que l'espace disque d'échappement). Cela est plus difficile à faire avec des limites plus petites car les téléchargements se termineront plus rapidement et recycleront les connexions plus rapidement. Bien sûr, vous pouvez tout simplement claquer le serveur avec des tentatives de connexion de toute façon. –

+0

max_execution_time affecte uniquement le temps d'exécution du script lui-même. Par conséquent, n'a pas d'impact sur le temps pris pour le téléchargement du fichier réel. Vous devez augmenter ** max_input_time ** de manière significative. Il définit le temps maximum, en secondes, le script est autorisé à recevoir une entrée (y compris le téléchargement du fichier lui-même). La valeur par défaut est 60 secondes. – Jakar

+0

Donc, ** max_input_time ** devrait être d'au moins 1500 si votre taille de fichier maximale est de 500 Mo. ** Pourquoi? ** Parce que la vitesse de téléchargement avg est d'environ 500kbps. Ou 1 Mo toutes les 2 secondes. 500 (Mo) * 2 sec = 1000 secondes. Et certains utilisateurs peuvent avoir un Internet plus lent ou utiliser une partie de leur bande passante pour d'autres tâches, donc un coussin de 500 ou plus serait bon. http://us2.php.net/manual/fr/features.file-upload.common-pitfalls.php – Jakar

0
+0

Thx pour cette :). Puisqu'il (et d'autres outils similaires là-bas) utilise simplement le type d'entrée html 'file' pour rendre et télécharger des fichiers .. pensez-vous d'avoir à changer les limites de téléchargement php créerait des failles de sécurité? –

+0

Bien sûr. Quelqu'un pourrait manger votre bande passante facilement. Mais votre examen des trous de sécurité maintenant avant de développer ce qui est bon. Vous pouvez donc faire de votre mieux pour combler ces trous tôt plutôt que tard. –

1

Je vous recommande d'implémenter un uploader Java, comme JumpLoader et de l'intégrer avec votre système actuel. Il a une API étendue et son interface JScript est facilement accessible. Vous pouvez, comme je l'ai fait, coder votre gestionnaire côté serveur et de le rendre capable de:

  1. fichiers multiples téléchargement
  2. Envois sans aucune limite dans filesize - Je me bats actuellement avec la limite 2G de PHP sur fopen(), mais je me attends à résoudre rapidement
  3. partitionnées téléchargement - fichier est téléchargé en morceaux
  4. intégrité de transmission - JumpLoader peut également calculer et envoyer checksums md5 pour chaque partition et tout le fichier lui-même, que vous pouvez valider dans le côté du serveur pour voir si le paquet est arrivé ok ou pas.

Espérons que cela aide.

Questions connexes