none
Envoyer une image vers un site php RRS feed

  • Discussion générale

  • Bonjour,

    J'aimerais envoyer une image a un site que j'ai créer en php depuis un le logiciel que je vais créer en VB.net

    voici le lien de mon site: http://votre_site/ajoutercapture.php

    J'ai aucune idée, je ne vous demande pas de tout me faire le boulot, juste de me dire dans quel direction je dois partir, ou quel fonction je dois regarder.

    Merci d'avance 

    Cordialement


    • Modifié Aurel Bera jeudi 12 septembre 2013 13:48 proteger site contre hacker
    mercredi 11 septembre 2013 21:48

Toutes les réponses

  • Bonjour

    Veuillez regarder ce thread:

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/9ef4095a-e750-47aa-acb9-b1cb3703b574/webclientuploadfile-and-webclientuploadvalues

     Ici vous avez la solution pour votre problème.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 septembre 2013 06:49
  • Comme ceci? Es ce que je dois changer ma page php? par ce que pour l'instant ça ne fonctionne pas 

    Imports System.IO
    Imports System.Net
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Upload("http://votre_site/ajoutercapture.php")
        End Sub
    
    
        Sub Upload(ByVal uploadUrl As String)
            Dim rdr As New FileStream("C:\Users\samuel\Desktop\images\multicoule.jpg", FileMode.Open)
            Dim req As HttpWebRequest = DirectCast(WebRequest.Create(uploadUrl), HttpWebRequest)
            req.Method = "PUT"
            req.ContentLength = rdr.Length
            req.AllowWriteStreamBuffering = True
            Dim reqStream As Stream = req.GetRequestStream()
            Dim inData As Byte() = New Byte(1023) {}
            Dim bytesRead As Integer = rdr.Read(inData, 0, inData.Length)
            While bytesRead > 0
                reqStream.Write(inData, 0, bytesRead)
                bytesRead = rdr.Read(inData, 0, inData.Length)
            End While
            rdr.Close()
            reqStream.Close()
            Dim responce As WebResponse = req.GetResponse()
            Dim s As Stream = responce.GetResponseStream
            Dim sr As StreamReader = New StreamReader(s)
            Me.TextBox1.Text = sr.ReadToEnd.ToString
        End Sub
    
    End Class


    • Modifié Aurel Bera jeudi 12 septembre 2013 13:47 proteger site contre hacker
    jeudi 12 septembre 2013 10:38
  •  

    Est que je peux faire quelques testes avec votre page Web?

    Essayez plutôt avec le code marque comme réponse ici.

    Merci!


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.



    • Modifié Aurel Bera jeudi 12 septembre 2013 11:30
    jeudi 12 septembre 2013 10:49
  • OUI OUI bien sur 
    jeudi 12 septembre 2013 11:18
  •  

    Dans la page PHP, comment vous vérifiez qu’on parle d'un SUBMIT ou non?

    Merci!


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 septembre 2013 11:51
  • Je ne comprend pas bien le question mais je vérifie que c'est bien une image, de taille pas trop grosse après avoir cliqué sur le bouton
    jeudi 12 septembre 2013 11:59
  •  

    Je m'explique:

    Vous prenez une décision pour afficher le <input file=....> ou afficher le résultat de téléchargement.

    Ma question c'est en fonction de quelle variable vous prenez cette décision.

    Ou, plus simple, pouvez-vous afficher la page PHP?


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 septembre 2013 12:06
  • Voila la page php

    <?php
    session_start();
    $titre="ajoutercapture";
    include("includes/identifiants.php");
    include("includes/debut.php");
    
    
    
    
        if (empty($_POST['sent'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
        {
    
            echo '
            <form method="post" action="ajoutercapture.php" enctype="multipart/form-data">
            
            <label for="avatar">image :</label>
            <input type="file" name="avatar" id="avatar" />
            <p>
            <input type="submit" value="Envoyer" />
            <input type="hidden" id="sent" name="sent" value="1" />
            </p>
            </form>';
            
        }   
        else //Sinon on est dans la page de traitement
        {
             //On déclare les variables 
     
    
        $avatar_erreur = NULL;
        $avatar_erreur1 = NULL;
        $avatar_erreur2 = NULL;
        $avatar_erreur3 = NULL;
     
        //Si il y a des erreurs on incrémente la variable i
        $i = 0;
        $temps = time();
     
     
        //Vérification de l'avatar
      
        if (!empty($_FILES['avatar']['size']))
        {
            //On définit les variables :
            $maxsize = 30072; //Poid de l'image
            $maxwidth = 100; //Largeur de l'image
            $maxheight = 100; //Longueur de l'image
            //Liste des extensions valides
            $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
      
            if ($_FILES['avatar']['error'] > 0)
            {
            $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
            }
            if ($_FILES['avatar']['size'] > $maxsize)
            {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
            (<strong>".$_FILES['avatar']['size']." Octets</strong>
            contre <strong>".$maxsize." Octets</strong>)";
            }
      
            $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
            if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
            {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
            (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
            <strong>".$maxwidth."x".$maxheight."</strong>)";
            }
      
            $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
            if (!in_array($extension_upload,$extensions_valides) )
            {
                    $i++;
                    $avatar_erreur3 = "Extension de l'avatar incorrecte";
            }
        }
        else
        {
            echo 'ERR_IMAGE_ABSENTE';
        }
     
      
        if ($i == 0) // Si $i est vide, il n'y a pas d'erreur
        {
            if (!empty($_FILES['avatar']['size']))
            {
                    move_avatar($_FILES['avatar']);
                     
                    echo'<p>OK_IMAGE_ENVOYE</p>';
            }
      
        }
        else
        {
            echo'<p>'.$i.' erreur(s)</p>';
            echo'<p>'.$avatar_erreur.'</p>';
            echo'<p>'.$avatar_erreur1.'</p>';
            echo'<p>'.$avatar_erreur2.'</p>';
            echo'<p>'.$avatar_erreur3.'</p>';
        }
    } //Fin du else
    
    
    ?>
    </div>
    </body>
    </html>
    </html>
    </html>

    et y a la fonction move_avatar qui est:

    <?php
    
    function move_avatar($avatar)
    {
        $extension_upload = strtolower(substr(  strrchr($avatar['name'], '.')  ,1));
        $name = time();
        $nomavatar = str_replace(' ','',$name).".".$extension_upload;
        $name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;
        move_uploaded_file($avatar['tmp_name'],$name);
        return $nomavatar;
    }
    
    ?>



    • Modifié sam333322 jeudi 12 septembre 2013 12:38
    jeudi 12 septembre 2013 12:30
  • Et voici le code fonctionel :

      Public Shared Sub HttpUploadFile(url As String, file As String, paramName As String, contentType As String, nvc As NameValueCollection)
            'log.Debug(String.Format("Uploading {0} to {1}", file, url))
            Dim boundary As String = "---------------------------" & DateTime.Now.Ticks.ToString("x")
            Dim lineSeparator As String = vbCr & vbLf
            Dim boundarybytes As Byte() = System.Text.Encoding.ASCII.GetBytes(lineSeparator & "--" & boundary & lineSeparator)
            Dim wr As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
            wr.ContentType = "multipart/form-data; boundary=" & boundary
            wr.Method = "POST"
            wr.KeepAlive = True
            wr.Credentials = System.Net.CredentialCache.DefaultCredentials
            Dim rs As Stream = wr.GetRequestStream()
            Dim formdataTemplate As String = "Content-Dis-data; name=""{0}""" & lineSeparator & lineSeparator & "{1}"
            For Each key As String In nvc.Keys
                rs.Write(boundarybytes, 0, boundarybytes.Length)
                Dim formitem As String = String.Format(formdataTemplate, key, nvc(key))
                Dim formitembytes As Byte() = System.Text.Encoding.UTF8.GetBytes(formitem)
                rs.Write(formitembytes, 0, formitembytes.Length)
            Next
            rs.Write(boundarybytes, 0, boundarybytes.Length)
            Dim headerTemplate As String = "Content-Dis-data; name=""{0}""; filename=""{1}""" & lineSeparator & "Content-Type: {2}" & lineSeparator & lineSeparator
            Dim header As String = String.Format(headerTemplate, paramName, file , contentType)
            Dim headerbytes As Byte() = System.Text.Encoding.UTF8.GetBytes(header)
            rs.Write(headerbytes, 0, headerbytes.Length)
            Dim fileStream As New FileStream(file, FileMode.Open, FileAccess.Read)
            Dim buffer As Byte() = New Byte(4095) {}
            Dim bytesRead As Integer = 0
            While (1) <> 0
                bytesRead = fileStream.Read(buffer, 0, buffer.Length)
                If bytesRead = 0 Then Exit While
                rs.Write(buffer, 0, bytesRead)
            End While
            fileStream.Close()
            Dim trailer As Byte() = System.Text.Encoding.ASCII.GetBytes(lineSeparator & "--" & boundary & "--" & lineSeparator)
            rs.Write(trailer, 0, trailer.Length)
            rs.Close()
            Dim wresp As WebResponse = Nothing
            Try
                wresp = wr.GetResponse()
                Dim stream2 As Stream = wresp.GetResponseStream()
                Dim reader2 As New StreamReader(stream2)
                MessageBox.Show(reader2.ReadToEnd())
                '  log.Debug(String.Format("File uploaded, server response is: {0}", reader2.ReadToEnd()))
            Catch ex As Exception
                '  log.[Error]("Error uploading file", ex)
                If wresp IsNot Nothing Then
                    wresp.Close()
                    wresp = Nothing
                End If
            Finally
                wr = Nothing
            End Try
        End Sub

    Vous devez l'appeler comme ça:

            Dim tx As New NameValueCollection()
            tx.Add("Envoyer", "Envoyer")
            tx.Add("sent", "1")
           HttpUploadFile("http://votre_site/ajoutercapture.php", "d:\Thunder.png", "avatar", "image/png", tx)

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera jeudi 12 septembre 2013 13:46
    jeudi 12 septembre 2013 13:38
  • Merci beaucoup, mais cela fonctionne a moitié, j'ai bien une période de chargement plus ou moins longue en fonction de la taille de l'image, mais elle ne sont pas enregistré sur mon site, pourtant j'ai bien reçu vos images sur mon site (environ six ou sept)

    Voila mon code

    Imports System.Collections.Specialized
    Imports System.Net
    Imports System.IO
    
    
    Public Class Form1
    
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim tx As New NameValueCollection()
            tx.Add("Envoyer", "Envoyer")
            tx.Add("sent", "1")
            'tx.Add("avatar", "")
            '   Dim fich(0) As String
            '  fich(0) = "d:\Thunder.png"
            '  UploadFilesToRemoteUrl("http://automweb.alwaysdata.net/ajoutercapture.php", fich, tx)
            HttpUploadFile("http://automweb.alwaysdata.net/ajoutercapture.php", "C:\Users\samuel\Desktop\images\multicoule.png", "avatar", "image/png", tx)
        End Sub
    
    
        Public Shared Sub HttpUploadFile(url As String, file As String, paramName As String, contentType As String, nvc As NameValueCollection)
            'log.Debug(String.Format("Uploading {0} to {1}", file, url))
            Dim boundary As String = "---------------------------" & DateTime.Now.Ticks.ToString("x")
            Dim lineSeparator As String = vbCr & vbLf
            Dim boundarybytes As Byte() = System.Text.Encoding.ASCII.GetBytes(lineSeparator & "--" & boundary & lineSeparator)
            Dim wr As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
            wr.ContentType = "multipart/form-data; boundary=" & boundary
            wr.Method = "POST"
            wr.KeepAlive = True
            wr.Credentials = System.Net.CredentialCache.DefaultCredentials
            Dim rs As Stream = wr.GetRequestStream()
            Dim formdataTemplate As String = "Content-Dis-data; name=""{0}""" & lineSeparator & lineSeparator & "{1}"
            For Each key As String In nvc.Keys
                rs.Write(boundarybytes, 0, boundarybytes.Length)
                Dim formitem As String = String.Format(formdataTemplate, key, nvc(key))
                Dim formitembytes As Byte() = System.Text.Encoding.UTF8.GetBytes(formitem)
                rs.Write(formitembytes, 0, formitembytes.Length)
            Next
            rs.Write(boundarybytes, 0, boundarybytes.Length)
            Dim headerTemplate As String = "Content-Dis-data; name=""{0}""; filename=""{1}""" & lineSeparator & "Content-Type: {2}" & lineSeparator & lineSeparator
            Dim header As String = String.Format(headerTemplate, paramName, file, contentType)
            Dim headerbytes As Byte() = System.Text.Encoding.UTF8.GetBytes(header)
            rs.Write(headerbytes, 0, headerbytes.Length)
            Dim fileStream As New FileStream(file, FileMode.Open, FileAccess.Read)
            Dim buffer As Byte() = New Byte(4095) {}
            Dim bytesRead As Integer = 0
            While (1) <> 0
                bytesRead = fileStream.Read(buffer, 0, buffer.Length)
                If bytesRead = 0 Then Exit While
                rs.Write(buffer, 0, bytesRead)
            End While
            fileStream.Close()
            Dim trailer As Byte() = System.Text.Encoding.ASCII.GetBytes(lineSeparator & "--" & boundary & "--" & lineSeparator)
            rs.Write(trailer, 0, trailer.Length)
            rs.Close()
            Dim wresp As WebResponse = Nothing
            Try
                wresp = wr.GetResponse()
                Dim stream2 As Stream = wresp.GetResponseStream()
                Dim reader2 As New StreamReader(stream2)
                MessageBox.Show(reader2.ReadToEnd())
                '  log.Debug(String.Format("File uploaded, server response is: {0}", reader2.ReadToEnd()))
            Catch ex As Exception
                '  log.[Error]("Error uploading file", ex)
                If wresp IsNot Nothing Then
                    wresp.Close()
                    wresp = Nothing
                End If
            Finally
                wr = Nothing
            End Try
        End Sub
    End Class


    • Modifié sam333322 jeudi 12 septembre 2013 14:15
    jeudi 12 septembre 2013 14:14
  • Pouvez-vous nous donner plusieurs détails:

    mais elle ne sont pas enregistré sur mon site, pourtant j'ai bien reçu vos images sur mon site

    Merci


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 06:06
  • Depuis mon logiciel FTP, j'ai pu constater que vous avec envoyer plusieurs images,mais moi quand j'envoie des images depuis VB.net, celles ci n'apparaissent pas sur mon logiciel FTP.
    vendredi 13 septembre 2013 10:01
  • Quel est le message si vous exécutez mon code?
    Il doit afficher un MessageBox.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 10:06
  • Oui il affiche bien un textBox avec le message suivant:  http://automweb.alwaysdata.net/images/avatars/1379067749_1.png
    vendredi 13 septembre 2013 10:23
  • J'ai eu ce comportement avant envoyer les paramètres comme ça: 

    Dim tx As New NameValueCollection()
            tx
    .Add("Envoyer", "Envoyer")
            tx
    .Add("sent", "1")
    HttpUploadFile("http://votre_site/ajoutercapture.php", "d:\Thunder.png", "avatar", "image/png", tx)

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 11:29
  • Il ya aucun changement voila ce qu vous venez de me dire:

    Dim tx As New NameValueCollection()
            tx.Add("Envoyer", "Envoyer")
            tx.Add("sent", "1")
    HttpUploadFile("http://votre_site/ajoutercapture.php", "d:\Thunder.png", "avatar", "image/png", tx)


    Et voila ce que j'avais avant:

    Dim tx As New NameValueCollection()
            tx.Add("Envoyer", "Envoyer")
            tx.Add("sent", "1")  
    HttpUploadFile("http://automweb.alwaysdata.net/ajoutercapture.php", "C:\Users\samuel\Desktop\images\multicoule.png", "avatar", "image/png", tx)


    vendredi 13 septembre 2013 11:52
  • Pouvez-vous afficher dans la page PHP tous les paramètres reçues  avec un var_dump($_REQUEST);
    A priori le paramètre "sent" n'est pas bien envoyée.
    Je ne peux plus tester avec votre site. Il y a un problème?
     
    Cordialement,

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 12:12
  • le serveur semble avoir quelque petit soucis, j'ai changé de serveur voila le lien :  http://autre_site.com/ajoutercapture.php

     j'ai ajouter var_dump sur la page


    • Modifié Aurel Bera vendredi 13 septembre 2013 13:28 securite
    vendredi 13 septembre 2013 12:59
  • A priori il y a un petit soucie avec copier - coller sur les forums (j'ai copiée le code comme dans l'image et après coller le résultat est ce que vous voyez).
    Veuillez modifier les deux linges rouges comme dans l'image :

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 13:21
  • le message du MessageBox a changé, mais les images ne sont toujours pas enregistrées 

    voial le nouveau message

    vendredi 13 septembre 2013 13:58
  • Maintenant vous pouvez effacer le var_dump($_REQUEST); 

    Son utilité c'était seulement pour debugger.


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 13 septembre 2013 14:03
  • Ok, le message est revenu le même qu'avant, et les images ne sont toujours pas enregistrées sur le site web

    vendredi 13 septembre 2013 14:12
  • Essayez de télécharger et faire un test avec ce projet :

    https://skydrive.live.com/redir?resid=B18C4CD1D33C3CA7!110

    Pour moi ca fonctionne :

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera vendredi 13 septembre 2013 14:22
    vendredi 13 septembre 2013 14:20
  • Cela fonctionne correctement, un grand merci pour le temps que vous m'avez consacré.
    • Modifié sam333322 vendredi 13 septembre 2013 16:27
    vendredi 13 septembre 2013 14:30