IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Optimiser une limite d'upload


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut Optimiser une limite d'upload
    Bonjour,

    Je voudrais savoir s'il existe une méthode en PHP pour stopper l'upload d'un fichier ayant dépassé une certaine taille... avant de l'avoir entièrement uploadé ?

    Prenons un exemple : si je limite l'upload à 10ko disons, et que j'upload un fichier de 20ko, le serveur va me répondre que le fichier est trop volumineux et si j'upload un fichier d'1Mo il va me répondre la même chose mais après beaucoup plus de temps.
    Alors ça me porte à croire que le serveur attend d'avoir le fichier en entier avant de pouvoir déterminer si sa taille dépasse la taille d'upload autorisée.
    Ce qui n'est pas vraiment optimal.

    En supposant que j'ai bien compris le problème, ma question serait donc : peut-on vérifier la quantité de données uploadées en cours, d'un fichier, pendant son upload ?

    Merci.

  2. #2
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Par défaut
    Salut,

    Tu devrais trouver la réponse dans la FAQ : http://php.developpez.com/faq/?page=fichiers

    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut
    Hé bien, pas vraiment.
    Ce que je peux faire avec mes connaissances et la FAQ c'est vérifier la taille d'un fichier avec fopen() fgets() fclose(), puis l'uploader ensuite si la taille me convient.
    Mais ça revient à l'envoyer deux fois....

    Je voudrais savoir si on peut vérifier la quantité de données uploadées à un instant donné, d'un fichier, pendant son upload ?

    Il me faudrait donc une technique d'upload où je contrôle l'upload en php, et pas seulement l'après-upload.
    Ou alors une technique toute faite qui fait déjà ce que je veux.

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Ce n'est pas possible tout simplement.

    L'accès à un fichier sur un poste client (internet) n'étant pas possible par ton serveur, il n' y a pas d'autres choix que de l'uploader sur ton server pour en vérifier ses paramètres.

  5. #5
    Membre confirmé Avatar de zebulon94
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 169
    Par défaut
    Bien entendu ton à configuré ton serveur php pour limité les uploads à 10Ko par exemple ?

    d.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Ce n'est pas possible tout simplement.

    L'accès à un fichier sur un poste client (internet) n'étant pas possible par ton serveur, il n' y a pas d'autres choix que de l'uploader sur ton server pour en vérifier ses paramètres.
    Et au moment de la réception du fichier par le serveur, on reçoit le fichier par paquets.
    Il doit donc être possible de calculer le poids des paquets téléchargés à un instant donné.
    Et dans le cas où on dépasse la taille on stoppe l'upload avant la fin.

    C'est forcément possible.
    Reste à savoir si quelqu'un sait comment faire ou si quelqu'un connaît un existant disponible me permettant de le faire.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Je dirais que dans l'absolu oui c'est possible mais l'upload n'est pas géré par PHP c'est géré par le protocole HTML qui passe ensuite le relais à PHP. Pour faire cela tu vas devoir réécrire ton serveur web.

    Le mieux dans ton cas c'est d'interdire le télechargement en amont, pour faire cela un widget flash + javascript est fortement recommandé.
    http://www.pixeline.be/experiments/jqUploader/test.php

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Beho Double Voir le message
    Et au moment de la réception du fichier par le serveur, on reçoit le fichier par paquets.
    Il doit donc être possible de calculer le poids des paquets téléchargés à un instant donné.
    C'est forcément possible.
    Dommage que tu ne connaisses pas trop les contraintes d'un serveur, quand tu écris "c' est forcément possible"

    C' est forcément malheureusement nom,

    Imagines un serveur comme celui de developpez.net et .com , des millier de visiteurs des millier de page alors comment paramétrer le serveur qui entre autre habrite d'autres sites , pour qu'il gére le téléchargement de ton avatar par exemùple ???

    Tu comprends bien que seul le php (ou autre langage) en a le control !
    ors la fonction va télécharger en temporary du serveur l'objet, là va en obtenir les capacitées poid, taille etc ...

    Et ni widget flash ni javascript n' y changeront rien

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    APC ne te permettra pas d'interdire le téléchargement.

    A mon humble avis il est plus facile de vérifier la taille du fichier sur le poste du client donc avant l'envoi du fichier. Je l'ai fait via un widget flash et ça marche très bien.

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Beho Double Voir le message
    Bon, puisque ce n'est "pas possible" je vous mets une solution que je viens de trouver et qui fait ce que je veux grâce à l'extension APC :
    Citation Envoyé par batataw Voir le message
    APC ne te permettra pas d'interdire le téléchargement.
    A mon humble avis il est plus facile de vérifier la taille du fichier sur le poste du client donc avant l'envoi du fichier. Je l'ai fait via un widget flash et ça marche très bien.
    Non et Non ... si vous croyez avoir controlé cela, il faut vous demander les points suivants

    1) en local je peux tout faire, OUI
    2) un html venant d'un site web ne peut pas contrôler un de mes fichier de mon micro !! ou alors vous avez une grosse faille de sécurité !
    3) quelque soit l'outil, flash, javascript ou autre, si vous pouvez lire des infos
    d' un fichier (pourquoi pas la base de registre) ça vous parait bien ??

    Non du reste pour en revenir au upload, regardez le temps qu'il faut pour un fichier de 10 Mo avant que la réponse vienne "trop gros"

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    3) quelque soit l'outil, flash, javascript ou autre, si vous pouvez lire des infos
    d' un fichier (pourquoi pas la base de registre) ça vous parait bien ??
    Oui ca me parait bien de pouvoir vérifier la taille d'un fichier avant envoi plutôt qu'apres, ceci n'a rien de dangereux, c'est de l'action script. Des milliers de sites sont en actionscript comme tu le sais. Quant a la base de registre ben non pourquoi tu veux y accéder ??? Il faut juste vérifier la taille du fichier que l'utilisateur veut uploader pas scanner tout le disque dur. Je l'ai fait un je trouve ca simple et efficace. Jette un oeil tu verras par toi meme:
    http://www.pixeline.be/experiments/jqUploader/test.php

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par batataw Voir le message
    Oui ca me parait bien de pouvoir vérifier la taille d'un fichier avant envoi plutôt qu'apres, ceci n'a rien de dangereux, c'est de l'action script. Des milliers de sites sont en actionscript comme tu le sais. Quant a la base de registre ben non pourquoi tu veux y accéder ??? Il faut juste vérifier la taille du fichier que l'utilisateur veut uploader pas scanner tout le disque dur. Je l'ai fait un je trouve ca simple et efficace. Jette un oeil tu verras par toi meme:
    http://www.pixeline.be/experiments/jqUploader/test.php
    Il faut appeler un chat un chat, Fox lui c' est un renard et il s'est planté

    Ton test est convainquant

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Je t'en pris, tout le monde peut se tromper

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 54
    Par défaut
    J'ai testé et a priori ça marche avec APC, une extension pour PHP.
    On peut récupérer le poids total du fichier dès le début de l'upload et éviter que le serveur conserve un fichier uploadé qui serait au-dessus d'un certain poids.
    On peut aussi stopper la manip' côté client avec un peu d'AJAX ce qui évite au client de continuer à envoyer son fichier alors qu'il est trop lourd.

    Et en prime, comme on peut aussi avoir le "poids courant" du fichier en cours d'upload, on peut se faire une barre de progression de l'upload avec un peu d'AJAX toujours.

Discussions similaires

  1. Comment faire une requête optimisée avec limite
    Par beyo dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/11/2012, 21h25
  2. Peux-ton fixer une limite d'upload / sec
    Par programmerPhil dans le forum Apache
    Réponses: 3
    Dernier message: 18/07/2006, 10h37
  3. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26
  4. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  5. Comment optimiser une jointure ?
    Par seb_asm dans le forum Administration
    Réponses: 21
    Dernier message: 25/06/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo