[RESOLU]ecrire dans une BDD distante depuis mon PI
Modérateurs : Francois, maxty01
Re: ecrire dans une BDD distante depuis mon PI
Je viens de lire ton tuto.......c'est hard !!!!
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.
Dans ton exemple 1 le PI est serveur et client ?
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.
Dans ton exemple 1 le PI est serveur et client ?
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: ecrire dans une BDD distante depuis mon PI
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.
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).
Re: ecrire dans une BDD distante depuis mon PI
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
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
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)
Cela fonctionne bien
Mais pour les photos comment faire ?
A+
Estelle
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: ecrire dans une BDD distante depuis mon PI
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
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).
Re: ecrire dans une BDD distante depuis mon PI
Voilà j'ai testé cela ;
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
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>
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
-
- Raspinaute
- Messages : 1587
- 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
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 :
Il faut ensuite redémarrer Apache.
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
- 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.
Re: ecrire dans une BDD distante depuis mon PI
Lolo, le serveur est chez Free
Prg du PI:
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)
Re: ecrire dans une BDD distante depuis mon PI
J'ai essayé cela:
Pas d"erreur mais pas de fichier sur le répertoire "images"
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é !";
}
}
}
?>
Re: ecrire dans une BDD distante depuis mon PI
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']"
A+
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 ";}
?>
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: ecrire dans une BDD distante depuis mon PI
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.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 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).