45 votes

Téléchargez des fichiers de 1 Go en utilisant la segmentation en PHP

J'ai une application web qui accepte les uploads de fichier de 4 MO. Du côté serveur, le script est PHP et serveur web de NGINX. De nombreux utilisateurs ont demandé d'augmenter cette limite de façon drastique afin de permettre le téléchargement de la vidéo par exemple.

Cependant, il semble y avoir pas de solution facile à ce problème avec PHP. Tout d'abord, sur le côté client, je suis à la recherche de quelque chose qui me permettrait de segmenter les fichiers pendant le transfert. SWFUpload ne semble pas le faire. Je suppose que je peux l'application flux à l'aide de Java FX (http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file) mais je ne trouve pas d'équivalent de la demande.getInputStream en PHP.

L'augmentation de navigateur client_post limites ou php.ini télécharger ou max_execution temps n'est pas vraiment une solution pour les très gros fichiers (~ 1 GO), parce que peut-être le navigateur le temps de penser à toutes ces gouttes stockées dans la mémoire.

Est-il possible de résoudre ce problème en utilisant PHP côté serveur? Je vous serais reconnaissant de vos réponses.

15voto

Dean Rather Points 7856

plupload est une bibliothèque javascript / php, elle est assez facile à utiliser et permet la segmentation.

Il utilise cependant HTML5.

3voto

Bart van Heukelom Points 11977

"mais je ne trouve aucun équivalent de request.getInputStream en PHP."

fopen('php://input'); peut-être?

3voto

rjha94 Points 1879

J'ai créé un client JavaFX pour envoyer des fichiers volumineux en morceaux de taille maximale (j'utilise 2 Mo) et un script de récepteur PHP pour assembler les morceaux dans le fichier d'origine. Je publie le code sous licence apache ici: http://code.google.com/p/gigaupload/ N'hésitez pas à utiliser / modifier / distribuer.

1voto

Filkor Points 450

Vous n'avez pas besoin d'augmentation de post limite et comme... je sais que c'est une vieille question, mais ce "chunking" est maintenant possible sur le côté client, uniquement avec Javascript. J'ai fait une démo il y a plusieurs mois:

dnduploader.filkor.org

  • Vous pouvez télécharger des fichiers extrêmement volumineux avec cette.
  • Reprise possible, de sorte que vous pouvez continuer le processus de téléchargement, même lorsque vous vous déconnectez ou fermer le navigateur "accidentellement"
  • etc..

Source sur GitHub.

0voto

Chris Points 1263

Que diriez-vous d'utiliser une applet java pour le téléchargement et PHP pour le traitement ..

Vous pouvez trouver un exemple ici pour Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X