Upload fichier supérieur à 300 Mo - PHP - Programmation
Marsh Posté le 06-12-2008 à 12:21:58
Quoi que tu fasses, c'est un peu "chiant" parce que HTTP n'est pas fait pour ça..
J'ai écris une applet qui permet d'uploader des gros fichiers, mais quoi qu'on fasse j'ai toujours trouvé le résultat un peu moyen ..
Marsh Posté le 06-12-2008 à 12:48:57
esox_ch t'as dit que le problème vient plus du protocole que du langage.
FTP serait plus adapté.
EDIT : _ch
Marsh Posté le 06-12-2008 à 12:51:25
sircam a écrit : |
Mon _ch va me couter la victoire sur NazzTazz, mais j'en suis fier quand même
Marsh Posté le 06-12-2008 à 12:52:21
J'ai eu le même problème.
Pour le résoudre, j'ai monter un p'tit FTP anonyme et installé un applet java qui ne permettait que d'uploader des fichiers sur un FTP. C'est las seule solution viable que j'ai trouvé.
Edit :
Euh...
En fait non j'y repense c'était pas du tout un FTP anonyme.
Mais les id/mdp de connexion étaient intégrés à l'applet donc c'était complètement transparent pour l'utilisateur.
Marsh Posté le 06-12-2008 à 13:10:42
Je dois réfléchir à un système similaire à implémenter dans ma plateforme-
Le problème qu'avec ton système, c'est assez simple de récupérer les identifiants de connexion et en conséquence, de voir ce qu'uploadent les autres.
Une solution serait peut-être de transmettre ça via SFTP + applet avec code "obscuré" mais je sais pas trop ce que ça donne niveau risques pour la sécurité du serveur :s Et j'aimerais éviter de devoir monter une cage chroot pour l'utilisateur "public" juste pour pouvoir permettre des gros upload
Marsh Posté le 06-12-2008 à 13:14:40
Bah en principe tu peux très bien autoriser l'écriture sur un FTP sans rien d'autre. C'est à dire sans le listing, la suppression etc.
Personnellement c'était dans le cadre d'un backoffice donc pas trop de problèmes à donner les id de connexion puisqu'en principe ça ne tombe pas sur des personnes qui sont là pour faire n'importe quoi.
Marsh Posté le 06-12-2008 à 13:21:14
Dans mon cas le cadre d'utilisation serait à définir par l'administrateur du site. Il pourrait donc faire un "youtube" like en autorisant toute personne inscrite sur le site à uploader. Et là donc pour éviter qu'un non-inscrit puisse uploader, il faut restreindre l'accès au FTP de manière fiable .
Marsh Posté le 06-12-2008 à 13:26:16
Logiquement sur un FTP on doit pouvoir interdire :
- Création / Suppression de répertoires
- Suppression de Fichiers
- Listing du contenu
- Le download de fichiers
Et n'autoriser que l'upload de fichier.
Donc l'utilisation du FTP est très limité. On ne peut qu'envoyer des fichiers.
Bon après ça peut poser quelques problèmes :
- Envoyer un fichier qui à le même nom qu'un autre déjà présent sur le serveur va renvoyer un "permission denied" ou quelque chose comme ça.
- N'importe qui peut envoyer n'importe quoi via un client FTP classique. Donc peut être prévoir un cron de nettoyage aussi.
Mais dans l'absolue ça me parait possible et sans risques.
Edit : Quota aussi, histoire de pas remplir de DD du serveur, mais bon ça parait évident.
Marsh Posté le 06-12-2008 à 13:36:09
dwogsi a écrit : |
Pour çà suffit de faire un test de disponibilité de DD (histoires de capacité DD) avec le langage serveur utilisé et pareil pour le problème de fichier déjà existant
Pour PHP je pense à :
Code : |
Marsh Posté le 06-12-2008 à 13:36:52
Citation : |
ça c'est facile à éviter : Mon applet concatène un timestamp en nanosec, donc pas de risque.
Citation : |
ça c'est plus délicat. J'ai pensé à un cron s'exécutant toutes les 5 minutes et lançant un script disant :
Code :
|
Une fois l'upload terminé, l'applet donne l'ordre au serveur de déplacer le fichier uploadé dans une zone "sûre". Et toutes les 10 minutes les fichiers "illégaux" seraient effacés. En couplant ça avec un système de SFTP & co je pense que c'est assez sûr mais bon c'est quand même plus chiant à mettre en place qu'un simple form HTTP
Marsh Posté le 06-12-2008 à 13:44:05
Ah oui effectivement c'est plus compliqué qu'un simple form. Mais bon je vois pas de meilleur solution.
Sinon j'aime bien ton script de nettoyage, je crois que je vais reprendre l'idée, si tu permets.
Euh... Oui mais sachant que tout le monde a la possibilité de se connecter au serveur FTP je vois pas bien ce que peut y faire PHP.
Ya que le cron pour nettoyer de temps en temps qui peut fonctionner + quota.
Marsh Posté le 06-12-2008 à 13:56:26
je crois que je vais me pencher aussi sur cette option FTP + cron de nettoyage.
esox_ch: ton applet est il open source ?
Marsh Posté le 06-12-2008 à 13:58:11
dwogsi a écrit : Ah oui effectivement c'est plus compliqué qu'un simple form. Mais bon je vois pas de meilleur solution. |
dwogsi a écrit : |
non mais si tu passes par Java tu utilises des fonctions similaires que je ne connais pas
Marsh Posté le 06-12-2008 à 14:00:47
Oui on passe par un applet JAVA, mais tu peux faire ce que tu veux dans cet applet yaura toujours un moyen de retrouver toutes les informations de connexion au serveur. Donc n'importe qui pourra se connecter avec un client FTP classique et envoyer n'importe quoi. On est donc obligé de passer par un cron pour faire le ménage.
Marsh Posté le 06-12-2008 à 14:27:49
pipo83 a écrit : je crois que je vais me pencher aussi sur cette option FTP + cron de nettoyage. |
Malheureusement je l'avais développée pour un client spécifique, donc non. Cependant, j'avais posté certains bouts de code (les plus compliqués) ici sur le forum parce que j'avais eu des soucis. Ceci dit, je répète que l'Applet en question utilisait HTTP et donc le client a parfois eu des problèmes quand l'upload durait plus qu'une 10ène de minutes.. Des fois un upload de 200Mo passait, des fois pas. Jamais compris pourquoi.
dwogsi a écrit : Oui on passe par un applet JAVA, mais tu peux faire ce que tu veux dans cet applet yaura toujours un moyen de retrouver toutes les informations de connexion au serveur. Donc n'importe qui pourra se connecter avec un client FTP classique et envoyer n'importe quoi. On est donc obligé de passer par un cron pour faire le ménage. |
J'ai jamais trop cherché de ce côté là mais à ce que je me rappelle il y a moyen de créer des applet avec du code offusqué mais je sais pas ce que ça vaut. Disons qu'à mon avis si on fait bien les choses (SFTP + user dans chroot cage + Applet offusquée + Cron script) on doit déjà être pas mal ... Mais ça serait intéressant que quelqu'un de compétent donne son avis (Si ça se trouve y a 10x plus simple )
P.S: Tu peux reprendre ce que tu veux dwogsi
Marsh Posté le 06-12-2008 à 17:40:19
Bonjour
http://wiki.mediabox.fr/tutoriaux/ [...] r-avec-php si ça peut aider
http://www.infres.enst.fr/~danzart/php3/phpavance.php
http://www.asp-php.net/ressources/ [...] spx?id=105
Marsh Posté le 06-12-2008 à 17:48:46
esox_ch a écrit : |
dans ce cas la , le plus simple est de regarder ce qui passe sur le réseau
sinon, il y ales solutions de ce style : http://encodable.com/filechucker/
Marsh Posté le 08-12-2008 à 10:10:45
As-tu lu le topic ? Les infos que tu donnes n'apportent rien aux gens qui ont posté ici...
Sinon pour 100Mo max y'a ça : http://drop.io/
Marsh Posté le 08-12-2008 à 18:21:48
jagstang a écrit : |
Et toi tu appelles ça aider ?
Marsh Posté le 08-12-2008 à 18:27:39
Reply
Marsh Posté le 06-12-2008 à 12:03:10
Bonjour,
je suis à la recherche d'un moyen d'uploader un fichier sup à 300 Mo sur un serveur via un formulaire php/html classique.
J'ai deja essayé de mettre essayé d'ajouter ceci à mon htaccess:
php_value file_uploads On
php_value memory_limit 400M
php_value post_max_size 400M
php_value upload_max_filesize 400M
Mais ca ne marche pas, en plus c'est un peu risqué !
Quelle est selon vous la méthode la plus propre pour faire passer 300 Mo par http ?
Peut etre en passant par un applet java ? existe t'il un script pret à l'emploi car je ne connais pas java ?
Merci de votre aide