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

Windows Forms Discussion :

Upload seulement partiel d'image.


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Upload seulement partiel d'image.
    Bonjour a tous,

    Voilà, j'utilise un script d'upload de fichier qui fonctionne sur la majorité des sites, mais celui que je traite en ce moment ne recoit pas mon fichier entierement.
    Alors soit le site me renvoi une erreur de traitement de l'image (apres l'upload) : Format d'image non reconnu ou fichier incomplet (Parameter is not valid.).
    Soit le site ne me mets pas d'erreur, mais je n'ai qu'une partie de mon image (le haut toujours, qui correspond aux premiers octets, parfois 1/4, d'autre fois la moitié, ca dépend, l'image est parfois presque entiere).

    Voici le script que j'utilise, je vous épargne tous les en-tête http qui, a mon avis, n'ont pas d'interet ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Stream memStream = new System.IO.MemoryStream();
                string entete = "";
                byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
     
                memStream.Write(boundarybytes, 0, boundarybytes.Length);
     
     
     
                string entete_fichier = "";
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "u", "slpro:visuel_add");
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "page_ok", "/" + num_annonce_monsite + "/annonce_edit_photo.htm");
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "page_err", "/" + num_annonce_monsite + "/annonce_edit_photo.htm");
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "idtypevisuel", "1");
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "idannonce", num_annonce_monsite);
                entete += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete = string.Format(entete, "rafraich", "1");
     
     
     
                byte[] headerbytes = System.Text.Encoding.ASCII.GetBytes(entete);
                memStream.Write(headerbytes, 0, headerbytes.Length);
     
     
     
                        entete_fichier = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\nContent-Type: image/jpeg\r\n\r\n";
                        entete_fichier = string.Format(entete_fichier, "visuel", jj+".JPG");
                        FileStream fileStream = new FileStream(files_monsite[jj], FileMode.Open, FileAccess.Read);
                        byte[] buffer = new byte[1024];
                        int bytesRead = 0;
                        byte[] headerbytes_0 = System.Text.Encoding.ASCII.GetBytes(entete_fichier);
                        memStream.Write(headerbytes_0, 0, headerbytes_0.Length);
                        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            memStream.Write(buffer, 0, bytesRead);
                        }
                        memStream.Write(boundarybytes, 0, boundarybytes.Length);
                        MessageBox.Show("Fichier entierement envoyé");
                        fileStream.Close();
     
     
     
                string entete_suite = "";
     
                entete_suite += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete_suite = string.Format(entete_suite, "descriptif_fr", "");
                entete_suite += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "\r\n";
                entete_suite = string.Format(entete_suite, "x", "59");
                entete_suite += "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n--" + boundary + "--\r\n";
                entete_suite = string.Format(entete_suite, "y", "13");
     
                byte[] headerbytes_suite = System.Text.Encoding.ASCII.GetBytes(entete_suite);
                memStream.Write(headerbytes_suite, 0, headerbytes_suite.Length);
                httpWebRequest_monsite_photo.ContentLength = memStream.Length;
                Stream requestStream = httpWebRequest_monsite_photo.GetRequestStream();
                memStream.Position = 0;
                byte[] tempBuffer = new byte[memStream.Length];
                memStream.Read(tempBuffer, 0, tempBuffer.Length);
                memStream.Close();
                requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                requestStream.Close();
                WebResponse webResponse2 = httpWebRequest_monsite_photo.GetResponse();
                Stream stream2 = webResponse2.GetResponseStream();
                StreamReader reader2 = new StreamReader(stream2);
                string resultat = reader2.ReadToEnd();
                webResponse2.Close();
                httpWebRequest_monsite_photo = null;
                webResponse2 = null;
    files_monsite[] contient le chemin d'accès vers mes images a uploader, je passe le parametre jj a ma méthode, qui correspond a l'id de la photo a uploader

    Votre aide sera la bienvenue :p
    Merci d'avance.

    Ah oui, j'ai déjà tenté d'uploader la meme image depuis mon navigateur, aucun souci.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Personne n'a d'idée ?

    Existe-t-il une autre solution d'upload de photos/fichiers (avec gestion de cookies pour l'entete) que je pourrais tester voir si elle est davantage porteuse dans mon cas ?

    Merci d'avance

  3. #3
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    bonjour

    peut être la taille du Buffer ....

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    tu penses que je devrais l'augmenter ?
    J'ai un peu tout essayé, mais ca n'a pas l'air de changer quoique ce soit ... :s

  5. #5
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Tes photos font quel poids ? as tu essayé sur des photos plus petites (<300 ko). ?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Oui comme l'a suggéré shaun_the_sheep, essaie d'augmenter la taille du buffer. Plutôt que de lui définir une taille fixe comme tu le fais, tu peux l'adapter à la taille du flux :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var buffer = new byte[fileStream.Length];
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Mes photos sont très légères (environ 50 à 60 Ko).
    Je vais tester avec ta solution, je te tiens au courant pour le buffer.
    Merci d'avoir proposé une idée, j'espere que ca va marcher

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Bonjour a tous,

    Après avoir testé avec votre idée pour le buffer, malheureusement ca ne fonctionne toujours pas ...
    Avez-vous d'autres idées ?
    Le site sur lequel je publie appel une barre de progression lors de l'upload de fichier, est-ce que le probleme pourrait venir de là ?

    Merci d'avance pour vos idées.
    Si ca peut vous aider, le site en question est seloger.com

Discussions similaires

  1. [Upload] Comment lire une image
    Par TheOrY dans le forum Langage
    Réponses: 6
    Dernier message: 29/10/2007, 12h14
  2. Réponses: 6
    Dernier message: 22/05/2007, 11h01
  3. [Upload] Comment gérer les images ?
    Par calenfeaion dans le forum Langage
    Réponses: 2
    Dernier message: 01/05/2007, 18h20
  4. [Upload] Résolution d'une image
    Par shelko dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2007, 09h31
  5. [Upload] droit lecture sur image uploadée
    Par Mitaka dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2006, 11h52

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