2010-07-15 6 views
0

Je lis dans un fichier et je veux ajouter l'infromation d'en-tête MIME au début du fichier.C# Créer des informations d'en-tête MIME? (Content-Type etc.)

Par exemple: J'ai un fichier texte appelé test.txt. J'ai lu le fichier dans un tableau d'octets souhaitez ensuite ajouter la ligne suivante à la beggining:

Content-Type: text/plain; 
    name="test.txt" 
Content-Transfer-Encoding: binary 
Content-Disposition: attachment; 
    filename="test.txt" 

Comment puis-je obtenir le ce que le type de contenu est? Et comment recommanderiez-vous d'ajouter cela au début du fichier? J'avais l'intention de créer une chaîne avec cette information puis de la convertir en un tableau d'octets et de la coller sur le devant de mon tampon de fichiers, mais je suis inquiet de rencontrer des problèmes d'encodage.

+0

Comment grains fins avez-vous besoin d'obtenir lors de la détection type de fichier? Essayez-vous d'identifier xml, html, jpg, gif, png, exe, pdf, doc etc etc, ou simplement choisir entre texte et binaire? –

Répondre

2

Vous ne pouvez pas ajouter d'informations d'en-tête dans le fichier lui-même; il est transmis avec le fichier lorsque vous utilisez certains protocoles (principalement SMTP et HTTP).

EDIT: Si vous souhaitez travailler sur le type de contenu (également connu sous le nom Internet media type) à partir du contenu de fichiers, vous voudrez peut-être regarder quelque chose comme mime-util ou Apache Tika.

EDIT 2: Les réponses à cette question contribuera à la détection de type de contenu dans .NET:

EDIT 3: Si vous connaissez le format de fichier que vous travaillez, vous pouvez ajouter toute information arbitrale que vous souhaitez. Vous aurez besoin de cas particulier chaque format de fichier cependant. Je ne peux pas imaginer pourquoi vous voulez des informations de protocole dans votre fichier, mais c'est à vous de décider!

EDIT 4: Pour ajouter du texte au début d'un fichier texte:

static void WriteBeginning(string filename, string insertedtext) 
{ 
    string tempfile = Path.GetTempFileName(); 
    StreamWriter writer = new StreamWriter(tempfile); 
    StreamReader reader = new StreamReader(filename); 
    writer.WriteLine(insertedtext); 
    while (!reader.EndOfStream) 
     writer.WriteLine(reader.ReadLine()); 
    writer.Close(); 
    reader.Close(); 
    File.Copy(tempfile, filename, true); 
} 

(credit)

+1

Mais je/veux/ajouter des informations d'en-tête au fichier lui-même. –

Questions connexes