Aperçu de l'image à l'aide de Fileupload asp.net mvc et Jquery

Je suis en train de prévisualiser une image que l'utilisateur tente de télécharger.
C'est le code que j'utilise.Cela fonctionne bien dans tous les principaux navigateurs, mais je me demande si il ya une meilleure façon d'atteindre cet objectif sans l'aide de session(même si je suis de compensation de la session ) ?
Je ne veux pas utiliser le Flash.

   @using (Html.BeginForm("UploadImage", "Home", FormMethod.Post, new { id = "fileuploadform", @enctype = "multipart/form-data" }))
{
<input id="fileupload" type="file" onchange="ChangeImage()" name="files" multiple>
<div id="preview">
<img src="#" id="imgThumbnail" alt="preview" />
</div>
}
<script>
$(function ChangeImage() {
$('#fileuploadform').fileupload({
done: function (e, data) {
var d = new Date();
$('#imgThumbnail')[0].src = "/Home/ImageLoad?a=" + d.getTime();
}
});
});
</script>
[HttpPost]
public ActionResult UploadImage(IEnumerable<HttpPostedFileBase> files, PostViewModel model)
{
Session["ContentLength"] = Request.Files[0].ContentLength;
Session["ContentType"] = Request.Files[0].ContentType;
byte[] b = new byte[Request.Files[0].ContentLength];
Request.Files[0].InputStream.Read(b, 0, Request.Files[0].ContentLength);
Session["ContentStream"] = b;
return Content(Request.Files[0].ContentType + ";" + Request.Files[0].ContentLength);
}
public ActionResult ImageLoad(int? id)
{
byte[] b = (byte[])Session["ContentStream"];
int length = (int)Session["ContentLength"];
string type = (string)Session["ContentType"];
Session["ContentLength"] = null;
Session["ContentType"] = null;
Session["ContentStream"] = null;
return File(b, type);
}

OriginalL'auteur user636525 | 2013-01-20