2009-11-02 8 views
0

J'ai une application MVC asp.net qui prend en charge les fichiers de piste NMEA téléchargés à partir de petits enregistreurs GPS. Dans certains cas, les enregistreurs vont injecter des valeurs nulles (0x0) dans le texte du fichier de piste. Est-il possible de supprimer ces caractères 0x0 de InputStream HttpPostedFile avant d'enregistrer le fichier sur le système de fichiers du serveur pour le traitement? En l'état, je peux seulement accéder au premier caractère nul et c'est tout le fichier qui est sauvegardé sur le serveur.Comment passer les caractères nuls dans un fichier posté sur un formulaire asp.net?

Merci, Matthew

Répondre

0

InputStream est binaire et ne doit pas prendre soin au sujet des zéros. Donc, le problème est avec la conversion de données en texte - mais vous n'avez pas montré le code que vous utilisez pour convertir.

Vous pouvez sauter manuellement/zéros: remplace

var outstream = new StringStream(); 
var b; 
while ((b = http.InputStream.ReadByte()) != -1) 
    if (b != 0) 
     outstream.Write(b); 

et maintenant vous avez obtenu flux sans zéros (bien sûr, vous pouvez lire dans les blocs, etc, si vous voulez).

+0

Je ne fais aucune conversion maintenant; Appelez simplement la méthode .SaveAs (path) du fichier HttpPostedFile téléchargé. –

0

Si vous utilisez SaveAs, il convient d'écrire des zéros. Pouvez-vous vérifier le contenu InputStream dans le débogueur (par exemple en utilisant ma méthode de lecture ci-dessus) - êtes-vous sûr que HttpPostedFile contient des zéros - c'est-à-dire que vous recevez des données correctement? Utilisez-vous ENCTYPE = "multipart/form-data" pour votre formulaire de téléchargement?