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

C Discussion :

supprimer l'entête Mime en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Par défaut supprimer l'entête Mime en C
    bonjour,
    je me tourne encore une fois vers vous, voila je résume, j'ai un formualaire html qui envoie un fichier son vers un script CGI en c, qui lui doit le copier dans un nouveau fichier et l'enregistrer sur le disque dur.
    je reçois bien le fichier, mais biensur avec une entête Mime en plus. Mon problème est là, j'aimerais bien trouvé une solution pour enlever cette entête de la façon la plus générique possible pour que le script reste toujours portable.
    Voici la tête de mon fichier reçu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    -----------------------------187161971819895
    Content-Disposition: form-data; name="MAX_FILE_SIZE"
    
    1000000
    -----------------------------187161971819895
    Content-Disposition: form-data; name="file"; filename="essaie.wav"
    Content-Type: audio/wav
    
    RIFF–U sdfdsfgfshgdhghgjnghjhndhghjdg
    
    ce qui est en rouge c'est le début de mon fichier son, et avant c'est l'entête que je reçois. 
    Avez vous une idée?

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ce n'est pas une entête HTTP, c'est une entête MIME. Tu devrais changer le titre de ton message si tu veux attirer des personnes susceptibles de répondre.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Par défaut
    merci pour la correction

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Le mieux est d'utiliser une bibliothèque toute faite pour cela. Le traitement web est extrêmement répandu, même en C. De cette façon, tu es (presque) sûr que le traitement effectué respectera les RFC.

    Mais dans le cas présent, tu peux facilement t'en sortir… pour peu que tu admettes que tu reçoives de cette façon plusieurs arguments. Ton formulaire pourrait même envoyer plusieurs fichiers à la fois.

    Regarde comment est structuré ce que tu reçois. Il s'agit de blocs successifs, toujours construits de la même façon. Un séparateur « ------0123456789 » ; une ou plusieurs lignes décrivant les arguments ; une ligne vide pour en signaler la fin, et les données proprement dites jusqu'au séparateur suivant.

    Partant de ces informations, il faut procéder exactement comme tu le fais quand tu lis ces informations à l'œil nu. Tu commences par lire et stocker la première ligne, qui contient le séparateur. Ensuite si tu veux faire simple, tu vérifies si dans les arguments qui suivent, tu retrouves une paire de la forme « name="nom" » où nom est celui que tu as donné à ta balise <input> de type « file ».

    De là, si ce n'est pas le cas, tu lis ligne par ligne jusqu'à ce que tu reconnaisses à nouveau le séparateur (en comparant chaque ligne lue à celle que tu as sauvée au départ). Puis tu te ramènes au problème précédent.

    Si c'est bien le cas, alors tu lis ligne par ligne jusqu'à trouver la ligne vide. Tout ce qui suit ensuite est le contenu de ton fichier.

    Le seul ennui est que tu auras besoin d'en détecter la fin (via le même séparateur). Pour cela, il te faut également lire ligne par ligne ce qui suit. Et c'est génant car ton fichier binaire peut contenir un code qui corresponde au retour à la ligne, lequel n'est même pas codé de la même façon sur toutes les plate-formes. Mais peu importe : si tu écris ces lignes de la même façon dans ton fichier côté serveur, il te suffit de veiller à utiliser le même retour à la ligne. Il faudra aussi vérifier à chaque tour si ton buffer est plein ou pas car, dans ce cas, la ligne n'a pas finie d'être lue et il ne faut pas mettre le retour à la ligne.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 76
    Par défaut
    Bonjour,
    merci pour la réponse, désolé j'ai pas pu me connecter c'est dernier jour, il neige à bloc en bretagne et internet coupé

    Est ce que tu peux me citer quelques nom de bib qui vont ça, ça serait plus facile d'utiliser une bibliothèque que de faire comme tu avais dit. Je pense que ça sera plus portable de cette façon

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Là, honnêtement, tu aurais pu chercher un peu toi-même avant de demander.

    Si tu utilises déjà un serveur Apache, tu peux utiliser libapreq. Les dépendances dont elle a besoin seront presque toutes déja installées. Sinon, tu peux jeter un œil du côté de cgic.

    Et puis, si tu fais beaucoup de Web et de services type Internet, on ne présente plus curl et la bibliothèque associée libcurl qui te rendront un nombre incalculables de services.

Discussions similaires

  1. supprimer l'entête d'une seule page d'un rapport
    Par Christinita dans le forum Mise en forme
    Réponses: 4
    Dernier message: 09/06/2016, 11h35
  2. Supprimer l'entête d'une Listview
    Par petchy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/07/2014, 16h36
  3. supprimer l'entête d'un fichier texte
    Par zskiredj dans le forum Général VBA
    Réponses: 6
    Dernier message: 10/03/2011, 17h09
  4. Réponses: 15
    Dernier message: 21/04/2009, 18h02
  5. Supprimer entête de page dans état Access
    Par nicoach dans le forum IHM
    Réponses: 3
    Dernier message: 20/08/2007, 21h47

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