6
votes

Impossible d'enregistrer httppostedfileBase à la variable de session et à utiliser deux fois

Bonjour - Je tente de sauvegarder un fichier httppostedfilebase (qui sera toujours un simple fichier CSV) à une variable de session, comme: xxx

comme vous le voyez, je suis en train de jeter Importingfile dans ma classe NoteImport. Actuellement, la propriété Importivefile est un type httppostedfileebase accessible publiquement.

La première fois que j'utilise cette propriété à mon service (méthode qui crée une liste des valeurs d'en-tête), je n'ai aucun problème: < Pré> xxx

Ce qui précède fonctionne bien et retourne exactement ce dont j'ai besoin pour le moment.

Mon problème est avec le code ci-dessous. Lorsque j'appelle readline (), cela n'obtient rien de la base httppostedfilebase. xxx

J'ai tenté de fermer le httppostedfileBase; J'ai également défini la position du flux sur 0. Rien ne semble aller. J'ai un sentiment que j'ai besoin de le changer à un autre type avant d'économiser à la session.

Tout conseil ??

Merci!


0 commentaires

3 Réponses :


0
votes

httppostedfile se lit directement à partir du flux de demande HTTP.
Il ne convient pas à la réutilisation.


0 commentaires

6
votes

Vous ne pouvez pas stocker un httppostedfilebase code> dans la session. Cela n'a tout simplement pas de sens. Il contient un flux pointant vers le contenu du fichier à partir du flux de demande HTTP qui est déposé à la fin de la demande. Vous devez le sérialiser à un objet personnalisé avant de stocker en session. Par exemple:

public class MyFile
{
    public string Name { get; set; }
    public string ContentType { get; set; }
    public byte[] Contents { get; set; }
}


3 commentaires

parfait merci! La fonctionnalité que cela est destinée à être utilisée une fois par jour au mieux (actuellement, nous l'utilisons probablement une fois / une fois par semaine et le plus grand fichier CSV que nous avons utilisé pour compléter manuellement cette opération était de 55k. J'ai figuré en raison du minimal Utiliser, le stockage de la session serait plus efficace que d'écrire dans un fichier temporaire. Seriez-vous d'accord?


@Buekow, oui la taille du fichier semble acceptable pour stocker dans la session.


Pourriez-vous partager comment faire cela? Merci



2
votes

Si vous utilisez httppostedfileBase, vous devez le cloner en premier,
J'ai utilisé le code de ce git
Il vous suffit de ajouter ceci comme une classe dans votre espace de noms: xxx

Vous pouvez maintenant lire le httppostedfilebase comme: xxx

après avoir utilisé Ceci vous pouvez toujours écrire dans votre code principal: xxx

et il l'enregistrera dans le fichier.


0 commentaires