[RESOLU]ecrire dans une BDD distante depuis mon PI

Paramétrer le Raspberry Pi B/B+ pour se connecter via Ethernet ou une clé WiFi USB

Modérateurs : Francois, maxty01

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » mer. 7 déc. 2016 21:53

Je viens de lire ton tuto.......c'est hard !!!! :mrgreen:
Ce qu'il manque ce sont quelques dessins avec serveur/client
On dit toujours un petit dessin vaut mieux qu'un long discours
Tu parles de notions qui me sont inconnues. :roll:
Dans ton exemple 1 le PI est serveur et client ?

Bud Spencer
Raspinaute
Messages : 880
Enregistré le : lun. 15 août 2016 21:38

Re: ecrire dans une BDD distante depuis mon PI

Message par Bud Spencer » jeu. 8 déc. 2016 13:35

Oui, le PI peut à la fois servir de serveur et de client. En fait il faut te dire que le client n'a pas d'importance. c'est juste un navigateur web qui peut être exécuté depuis n'importe quel pc du réseaux (ou même distant) ou directement sur le PI qui sert de serveur.
Pour comprendre le fonctionnement des leçons du tuto, il faut les essayer(c'est pour ca que j'ais mis les sources en zip). En regardant les codes clients et serveurs et ce qui se passe à l'écran, la compréhension se fait naturellement.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » sam. 10 déc. 2016 18:36

Merci Bud Spencer la partie son c'est ok

Je vous sollicite encore un peu car j'ai lu que l'on pouvait envoyer des images de la même façon que les données avec Requests

Code : Tout sélectionner

Pour envoyer une image par multipart, encore plus facile :

file = {'file': open("photo.png", "rb")}
r = requests.post("http://linuxfr.org", files = file)
Sauf que pour les données ont crée un php et avec une instruction ont récupére en x=$POST["contenu de la variable du pi"] le contenu de la variable du PI
Cela fonctionne bien
Mais pour les photos comment faire ?
A+
Estelle

Bud Spencer
Raspinaute
Messages : 880
Enregistré le : lun. 15 août 2016 21:38

Re: ecrire dans une BDD distante depuis mon PI

Message par Bud Spencer » dim. 11 déc. 2016 10:23

Je n'ais pas d'exemple php sous la main, mais de mémoire c'est assez simple. Il faut regarder du coté de la var global $_FILE de php(c'est la dedans que sera reçu temporairement ton fichier coté php), ensuite faire les contrôles nécessaires (taille maxi, extensions acceptées ....) et ensuite utiliser la fonction move_uploaded_file pour l'enregistrer dans le répertoire de destination finale. Tu peux aussi le stocker dans ta base de données, mais c'est un poil plus compliqué.

Fais des recherches à php $_FILE et à php move_uploaded_file, tu devrais trouver des tas d'exemples facilement exploitable. Si tu ne t'en sort pas je te ferais un exemple
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » dim. 11 déc. 2016 17:32

Voilà j'ai testé cela ;

Code : Tout sélectionner

<html>
<head>
  <meta charset="utf-8">
</head>
<body>
<?php
// Copie dans le repertoire du script avec un nom
// incluant l'heure a la seconde pres 
$repertoireDestination = dirname("images")."/";
$nomDestination        = "picture_rucher_".date("YmdHis").".jpg";

if (is_uploaded_file($_FILES["picture_rucher"]["tmp_name"])) {
    if (rename($_FILES["picture_rucher"]["tmp_name"],
                   $repertoireDestination.$nomDestination)) {
        echo "Le fichier temporaire ".$_FILES["picture_rucher"]["tmp_name"].
                " a été déplacé vers ".$repertoireDestination.$nomDestination;
    } else {
        echo "Le déplacement du fichier temporaire a échoué".
                " vérifiez l'existence du répertoire ".$repertoireDestination;
    }          
} else {
    echo "Le fichier n'a pas été uploadé (trop gros ?)";
}
?>
</body>
</html>
Résultat;
Le fichier n'a pas été uploadé (trop gros ?)

Du PI j'ai transférer le fichier "picture_rucher.jpg" et je veux le ranger au niveau du serveur en "www/images"
Le fichier fait 2,2 Mo
Tu peux m'aider...je dois pas être loin
A+
Estelle

destroyedlolo
Raspinaute
Messages : 1406
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: ecrire dans une BDD distante depuis mon PI

Message par destroyedlolo » dim. 11 déc. 2016 19:08

Salut,

La limite par défaut est de 2 Mo.
Pour la changer, il faut aller dans le fichier php.ini qui devrait se trouver quelque part sous /etc (chez moi c'est /etc/php/apache2-php5.6/php.ini mais ça dépend de la distribution).
Et modifier la ligne :

Code : Tout sélectionner

upload_max_filesize = 2M
Il faut ensuite redémarrer Apache.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » lun. 12 déc. 2016 06:38

Lolo, le serveur est chez Free

Prg du PI:

Code : Tout sélectionner

fic="/home/pi/partage/picture_rucher.jpg"
file = {'file': open(fic, "rb")}    
r = requests.post("http://ruches.montminoises.free.fr/AfficheCamera.php", files = file)

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » lun. 12 déc. 2016 08:47

J'ai essayé cela:

Code : Tout sélectionner

<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['monfichier']['size'] <= 2500000)
        {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                        // On peut valider le fichier et le stocker définitivement
                        move_uploaded_file($_FILES['monfichier']['tmp_name'], 'images/' . basename($_FILES['monfichier']['name']));
                        echo "L'envoi a bien été effectué !";
                }
        }
}
?>
Pas d"erreur mais pas de fichier sur le répertoire "images"

estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » lun. 12 déc. 2016 11:06

J'ai rajouté des "else"
Il me retourne par le "else" le message "Erreur:" sans rajouter le code de retour de la fonction " $_FILES['picture89.jpg']['error']"

Code : Tout sélectionner

<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['picture89.jpg']) AND $_FILES['picture89.jpg']['error'] == 0)
{
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['picture89.jpg']['size'] <= 2500000)
        {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['picture89.jpg']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                        // On peut valider le fichier et le stocker définitivement
                        move_uploaded_file($_FILES['picture89.jpg']['tmp_name'], 'images/' . basename($_FILES['picture89.jpg']['name']));
                        echo "L'envoi a bien été effectué !";
                }
                else {echo "Extension non autorisée";}
        }
        else {
          $temp = $_FILES['picture89.jpg']['size'];
          echo "taille: $temp ";}
}
else {
  $temp=$_FILES['picture89.jpg']['error'];
  echo "erreur: $temp ";}
?>
A+

Bud Spencer
Raspinaute
Messages : 880
Enregistré le : lun. 15 août 2016 21:38

Re: ecrire dans une BDD distante depuis mon PI

Message par Bud Spencer » lun. 12 déc. 2016 12:42

estelle a écrit :J'ai rajouté des "else"
Il me retourne par le "else" le message "Erreur:" sans rajouter le code de retour de la fonction " $_FILES['picture89.jpg']['error']"

Code : Tout sélectionner

...
    // Testons si le fichier n'est pas trop gros
        if ($_FILES['picture89.jpg']['size'] <= 2500000)
...
Les paramètres de ton script pour définir la taille maxi du fichier ne peuvent pas aller au delà du paramètre de configuration du serveur php. Chez free, c'est 2Mo maxi par fichier pour l'upload php et tu ne peux pas intervenir sur ce paramètre.

Les solutions :
- changer d'hébergeur
- programmer les transferts depuis le client en utilisant le protocole ftp
- réduire automatiquement la taille des images avant de les transférer quand elles sont > a 2Mo (voir la librairie PIL pour Python)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Le réseau sur le Raspberry Pï »