[RESOLU] Envoi d'une image du PI vers mon site chez FREE

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

Modérateurs : Francois, maxty01

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

[RESOLU] Envoi d'une image du PI vers mon site chez FREE

Message par estelle » mer. 14 déc. 2016 17:08

Salut,
J'essaie depuis plusieurs jours d'envoyer une image du Pi ver mon site
J'utilise Requests
Coté PI

Code : Tout sélectionner

fic="/home/pi/partage/pi1.png"
files = {'file': open(fic, "rb")}    
       
r = requests.post("http://ruches.free.fr/Affiche.php", files = files)
print (r.text)
print (r.status_code)
Coté Free (php)

Code : Tout sélectionner

<?php
$nom_fichier = $_POST['/home/pi/partage/pi2.png'];
echo "fichier: $nom_fichier";
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['pi2.png']) AND $_FILES['pi2.png']['error'] == 0)
{
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['pi1.png']['size'] <= 2000000)
        {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES["pi2.png"]["name"]);
                echo $infosfichier;
                $extension_upload = $infosfichier['extension'];
                echo $extension_upload;
                $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["pi2.png"]["tmp_name"], 'images/' . basename($_FILES["pi2.png"]["name"]));
                        echo "L'envoi a bien été effectué !";
                }
                else {echo "Extension non autorisée";}
        }
        else {
         $temp = $_FILES['pi2.png']['size'];
          echo "taille: $temp ";}
}
else {
  $temp=$_FILES['pi2.png']['error'];
  echo "erreur: $temp ";}
?>
En réponse, j'ai le status à 200 et fichier: rien erreur; rien
Donc au 1er test "if (isset($_FILES['pi2.png']) AND $_FILES['pi2.png']['error'] == 0)" on part sur le "else"

Qui peut m'aider ?
Merci d'avance
Estelle
Modifié en dernier par estelle le mer. 25 janv. 2017 07:28, modifié 1 fois.

Alexidreaming
Raspinaute
Messages : 211
Enregistré le : mar. 16 août 2016 20:55
Contact :

Re: Envoi d'une image du PI vers mon site chez FREE

Message par Alexidreaming » mer. 14 déc. 2016 18:43

Salut, je ne comprends pas ce que tu veux, en gros tu veyx qu'on puisse télécharger l'image disque sur ton site? Ou qu'on puisse l'émuler?
Réexplique STP
Le pro du déterrage de topic est là!

Alexidreaming

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par estelle » jeu. 15 déc. 2016 06:57

Salut,

J'ai une photo prise par une camera de mon pi que je veux envoyer automatiquement vers un répertoire de mon site hébergé chez FREE
J'utilise déjà avec succes Requests pour l'envoi de variables
J'ai lu que l'on pouvait faire exactement la même chose avec les fichiers
Maintenant s'il y a une autre solution je suis preneuse
Merci
A+

Alexidreaming
Raspinaute
Messages : 211
Enregistré le : mar. 16 août 2016 20:55
Contact :

Re: Envoi d'une image du PI vers mon site chez FREE

Message par Alexidreaming » ven. 16 déc. 2016 14:51

Salut, l'image, tu veux quelle s'affiche sur le site, ou quelle soit juste stocké et que tu puisse la récupérer plus tard?
Le pro du déterrage de topic est là!

Alexidreaming

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Envoi d'une image du PI vers mon site chez FREE

Message par domi » ven. 16 déc. 2016 19:40

Si c'est juste envoyer une image pourquoi ne pas le faire en FTP ?
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par Bud Spencer » sam. 17 déc. 2016 11:58

le coté php
upload_php.png
upload_php.png (13.64 Kio) Vu 6314 fois
et le coté python
upload_python.png
upload_python.png (4.6 Kio) Vu 6350 fois
...
Modifié en dernier par Bud Spencer le mer. 21 déc. 2016 21:54, modifié 2 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par estelle » mer. 21 déc. 2016 09:10

J'ai suivi tes conseils mais j'ai les messages
-Erreur Extension
-echec upload

status = 200

Code : Tout sélectionner

<?php
$dir = 'images/';
$file = basename($files['images']['name']);
$file_temp = $files['images']['name'];
$size = filesize($file_temp);
$file_ext = strrchr($file,'.');

$exts = array('.gif','.png','.jpg');
$size_max = 200000;
if(!in_array($file_ext, $exts)) {echo 'Erreur Extension';}
if($size>$size_max) {echo 'erreur taille maxi';}

if(!isset($error))
{
  if(move_uploaded_file($file_temp, $dir . $file)) {
    echo 'upload ok';}
  else {echo 'echec upload';}
}    
?>

Code : Tout sélectionner

files = {'image': open('/home/pi/Documents/Camera/pi1.png', "rb")}     
                                                                             
      r = requests.post("http://ruches.montminoises.free.fr/Transfert_image.php", files = files)
     
      print (r.text)
      print (r.status_code)

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par Bud Spencer » mer. 21 déc. 2016 09:48

Le code que j'ai mis fonctionne à coup sur sous réserve de restriction de config et de version php >= 5(de mémoire) et il suffit juste de le lire correctement pour le comprendre.

La variable postée se nomme 'image' dans ton script python (files = {'image': open('/home/pi.....)
et dans ton script php tu as mis 'images' pour initialiser tes variables ($file = basename($files['images']['name']); et $file_temp = $files['images']['name'];)

donc soit tu met un 's' a 'image' dans ton script python ou alors tu le supprimes sur les lignes d'initialisations de $file et $file_tmp dans ton scrip php

la variable $dir qui contiend 'images/' dans le php n'a rien à voir avec tout ca, elle défini le répertoire de destination, ce qui sous entend que ce répertoire doit exister sous la racine de l'emplacement de ton script php
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par estelle » mer. 21 déc. 2016 20:57

oui tu as raison, il y a une petite erreur lors de la transcription
Après modification, j'ai toujours les mêmes erreurs !
Je vais essayer avec OVH car j'ai un doute avec FREE..
Peut être il bloque l'envoi de fichier....

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

Re: Envoi d'une image du PI vers mon site chez FREE

Message par Bud Spencer » mer. 21 déc. 2016 21:50

Je viens de tester avec le client python sur un pi et le php sur un site hébergé chez online, et ca fonctionne parfaitement (je n'ais pas de compte free pour essayer chez eux).
Par contre tu peux supprimer la condition 'if(!isset($error))' dans le code php. Je l'avais mise dans mon code de départ pour stocker les erreurs éventuelles dans une variable avant de simplification du code et j'ai oublié de l'enlever (ce qui n'empêche pas de fonctionner). j'ai fais la motif dans l'image du code.

J'ai regardé ton code et il y avait d'autres erreurs, notamment sur les lignes suivantes :

$file = basename($files['images']['name']); à remplacer par : $file = basename($_FILES['image']['name']);
$file_temp = $files['images']['name']; à remplacer par : $file_temp = $_FILES['image']['tmp_name'];

Pour comprendre, une seule solution -> RTFM -> http://php.net/manual/fr/reserved.variables.files.php

Pour t'éviter les mauvaises recopies, voila ton code tout corrigé que tu as juste à copier coller.

Code : Tout sélectionner

<?php

$dir = 'images/';   
$file = basename($_FILES['image']['name']);
$file_temp = $_FILES['image']['tmp_name'];  
$size = filesize($file_temp);
$file_ext = strrchr($file,'.');

$exts = array('.gif','.png','.jpg');
$size_max = 200000;

if(!in_array($file_ext, $exts)) {echo 'Erreur Extension';}
if($size>$size_max) {echo 'erreur taille maxi';}

if(move_uploaded_file($file_temp, $dir . $file)) 
{echo 'upload ok';}else {echo 'echec upload';}

?>
ps : ne mets pas publiquement l'adresse de ta page d'upload. Il n'y a aucune sécurité et n'importe qui pourrait uploader n'importe quel photos sur ton site ... du moins quand ca fonctionnera ... note aussi que la variable $size_max est fixée a 200.000 dans le code et non pas a 2.000.000, donc pense a réadapter si tu veux envoyer des images jusqu'à 2Mo
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ï »