web-dev-qa-db-fra.com

ASP.Net MVC - Lire un fichier à partir de HttpPostedFileBase sans enregistrer

Je télécharge le fichier en utilisant l'option de téléchargement de fichier. Et je suis directement envoyer ce fichier de View au contrôleur dans POST comme,

    [HttpPost]
    public ActionResult Page2(FormCollection objCollection)
    {
        HttpPostedFileBase file = Request.Files[0];
    }

Supposons que je télécharge un fichier bloc-notes. Comment puis-je lire ce fichier et ajouter ce texte au constructeur de chaînes, sans enregistrer ce fichier ....

Je suis au courant après SaveAs de ce fichier, nous pouvons le lire. Mais comment lire ce fichier à partir de HttpPostedFileBase sans sauvegarder?

60

Ceci peut être fait en utilisant la classe httpPostedFileBase retourne le HttpInputStreamObject comme spécifié - ici

Vous devez convertir le flux en tableau d'octets et lire le contenu du fichier.

S'il vous plaît se référer lien suivant

http://msdn.Microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx ]

J'espère que cela t'aides

MISE À JOUR :

Le flux que vous recevez de votre appel HTTP est en lecture seule séquentielle (non-cherchable) et FileStream est en lecture/écriture. Vous devrez d'abord lire le flux entier de l'appel HTTP dans un tableau d'octets, puis créer le FileStream à partir de ce tableau.

Tiré de ici

// Read bytes from http input stream
BinaryReader b = new BinaryReader(file.InputStream);
byte[] binData = b.ReadBytes(file.ContentLength);

string result = System.Text.Encoding.UTF8.GetString(binData);
75

Une alternative consiste à utiliser StreamReader.

public void FunctionName(HttpPostedFileBase file)
{
    string result = new StreamReader(file.InputStream).ReadToEnd();
}
41
Richard YS

Un léger changement dans la réponse Thangamani Palanisamy, qui permet de supprimer le lecteur binaire et corrige le problème de longueur de saisie dans ses commentaires.

string result = string.Empty;

using (BinaryReader b = new BinaryReader(file.InputStream))
{
  byte[] binData = b.ReadBytes(file.ContentLength);
  result = System.Text.Encoding.UTF8.GetString(binData);
}
9
Stig