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
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé cette solution?
Cette solution est purement côté client, et n'ont pas besoin d'être téléchargés sur votre serveur avant d'aperçu. 🙂
OriginalL'auteur Victor Soto
Vous pourriez améliorer votre action est le code de cette façon:
OriginalL'auteur Ayoub