2010-11-16 17 views
1

J'essaye de publier des fichiers en utilisant OpenRasta. Je suis allé jusqu'à appeler mon gestionnaire, mais apparemment le flux dans l'entité est vide. Voici mon gestionnaire:Téléchargement avec multipart/form-data en utilisant OpenRasta et IMultipartHttpEntity

public OperationResult Post(IEnumerable<IMultipartHttpEntity> entities) 
{ 
    var foo = entities.ToList(); 
    foreach (var entity in foo) 
    { 
     if (entity.Stream != null && entity.ContentType != null) 
     { 
      var memoryStream = new MemoryStream(); 
      entity.Stream.CopyTo(memoryStream); 
     } 
    } 
    return new OperationResult.Created(); 
} 

Chaque fois que par la MemoryStream en boucle a une longueur de 0. Que fais-je tort?

Répondre

1

Rien ne vaut l'affichage sur StackOverflow pour rendre la réponse immédiatement évidente. Apparemment, vous n'obtenez qu'une seule énumération des entités afin de saisir le flux. J'avais ajouté la variable "foo" ci-dessus pour faciliter le débogage, mais cela provoquait l'échec du streaming. Comme j'ai stocké le flux dans la base de données, j'ai également échoué à réinitialiser memoryStream au début avant de l'écrire. La résolution de ces deux problèmes a permis de télécharger le fichier correctement.

+1

Semble mon commentaire précédent a disparu ou je l'ai posté ailleurs. Vous pouvez simplement utiliser IDownloadableFile ou Stream en tant que type que vous recevez, le composant Multipart est bas niveau si vous voulez un contrôle total de ce que vous voulez. – SerialSeb