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?
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);
Une alternative consiste à utiliser StreamReader.
public void FunctionName(HttpPostedFileBase file)
{
string result = new StreamReader(file.InputStream).ReadToEnd();
}
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);
}