日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

ASP.NET MVC實現單個圖片上傳、限制圖片格式與大小并在服務端裁剪圖片

瀏覽:540日期:2022-06-08 11:12:22

本篇,在ASP.NET MVC4下實現單個圖片上傳,具體功能包括:

  • 1、在客戶端選擇圖片,并限制圖片的大小和格式
  • 2、在客戶端上傳圖片,并顯示預覽圖
  • 3、在服務端限制圖片的大小和格式
  • 4、在服務端保存圖片時,把圖片裁剪成某個固定尺寸

本篇源碼在:https://github.com/darrenji/FileUploadInMVC

實現的大致思路是:

  • 客戶端限制圖片大小和格式,通過寫一個jQuery插件來實現
  • 服務端實現圖片裁剪,通過使用ImageSize組件來實現

首先是一個用來承載上傳信息的類:

    public class UploadFileResult    {//帶后綴的名稱,比如xxx.jpgpublic string FileName { get; set; }//圖片的字節數public int Length { get; set; }//圖片的類型:image/jpegpublic string Type { get; set; }public bool IsValid { get; set; }public string Message { get; set; }//圖片的完整路徑:~/AjaxUpload/20141112_large.jpgpublic string FilePath { get; set; }    }

在HomeController中,需要提供一個接收前端上傳文件并返回json格式的Action方法,還需要提供一個根據文件名刪除圖片的Action方法。

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;using System.Web.Mvc;using ImageResizer;using MvcApplication10.Models;namespace MvcApplication10.Controllers{    public class HomeController : Controller    {public ActionResult Index(){    return View();}//接收上傳圖片[HttpPost]public ActionResult UploadFile(){    //允許的圖片格式    var allowedExtensions = new[] { ".png", ".gif", ".jpg", ".jpeg" };    //返回給前臺的結果,最終以json返回    List<UploadFileResult> results = new List<UploadFileResult>();    //遍歷從前臺傳遞而來的文件    foreach (string file in Request.Files)    {//把每個文件轉換成HttpPostedFileBaseHttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;//如果前臺傳來的文件為null,繼續遍歷其它文件if (hpf.ContentLength == 0 || hpf == null){    continue;}else{    if (hpf.ContentLength > 1024*1024) //如果大于規定最大尺寸    {results.Add(new UploadFileResult(){    FileName = "",    FilePath = "",    IsValid = false,    Length = hpf.ContentLength,    Message = "圖片尺寸不能超過1024KB",    Type = hpf.ContentType});    }    else    {var extension = Path.GetExtension(hpf.FileName);if (!allowedExtensions.Contains(extension))//如果文件的后綴名不包含在規定的后綴數組中{    results.Add(new UploadFileResult()    {FileName = "",FilePath = "",IsValid = false,Length = hpf.ContentLength,Message = "圖片格式必須是png、gif、jpg或jpeg",Type = hpf.ContentType    });}else{    //給上傳文件改名    string date = DateTime.Now.ToString("yyyyMMddhhmmss");    //目標文件夾的相對路徑 ImageSize需要的格式    string pathForSaving = Server.MapPath("~/AjaxUpload/");    //目標文件夾的相對路徑 統計文件夾大小需要的格式    string pathForSaving1 = Server.MapPath("~/AjaxUpload");    //在根目錄下創建目標文件夾AjaxUpload    if (this.CreateFolderIfNeeded(pathForSaving))    {//保存小圖var versions = new Dictionary<string, string>();versions.Add("_small", "maxwidth=400&maxheight=250&format=jpg");//versions.Add("_medium", "maxwidth=200&maxheight=200&format=jpg");//versions.Add("_large", "maxwidth=600&maxheight=600&format=jpg");//保存各個版本的縮略圖foreach (var key in versions.Keys){    hpf.InputStream.Seek(0, SeekOrigin.Begin);    ImageBuilder.Current.Build(new ImageJob(hpf.InputStream,pathForSaving + date + key, //不帶后綴名的圖片名稱new Instructions(versions[key]),false,//是否保留原圖true));//是否增加后綴}results.Add(new UploadFileResult(){    FileName = date + "_small" + ".jpg",    FilePath = Url.Content(String.Format("~/AjaxUpload/{0}", date + "_small" + ".jpg")),    IsValid = true,    Length = hpf.ContentLength,    Message = "上傳成功",    Type = hpf.ContentType});    }  }    }}    }    return Json(new    {filename = results[0].FileName,filepath=results[0].FilePath,isvalid=results[0].IsValid,length=results[0].Length,message=results[0].Message,type=results[0].Type    });}//根據文件名刪除文件[HttpPost]public ActionResult DeleteFileByName(string smallname){    string pathForSaving = Server.MapPath("~/AjaxUpload");    System.IO.File.Delete(Path.Combine(pathForSaving, smallname));    return Json(new    {msg = true    });}//根據相對路徑在項目根路徑下創建文件夾private bool CreateFolderIfNeeded(string path){    bool result = true;    if (!Directory.Exists(path))    {try{    Directory.CreateDirectory(path);}catch (Exception){    result = false;}    }    return result;}    }}

在Home/Index.cshtml中,使用checkFileTypeAndSize.js插件來限制上傳圖片的大小和格式,使用FormData對象來接收圖片文件并傳遞給服務端,客戶端接收到服務端json數據動態創建表格行把預覽圖顯示出來。

@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}<style type="text/css">    #msg {color: red;    }</style><form id="file_upload_form" method="post" enctype="multipart/form-data" action="">    <input name="file" id="file" size="27" type="file" />    <img src="~/images/ajax-loader.gif" id="indicator" />    <br />    <div id="imgArea"><table id="tbl">    <tbody>     </tbody></table>    </div>    <div><span id="msg"></span>    </div></form>@section scripts{    <script src="~/Scripts/checkFileTypeAndSize.js"></script>    <script type="text/javascript">$(function() {    $("#file").checkFileTypeAndSize({allowedExtensions: ["jpg","jpeg","gif","png"],maxSize: 1024, //最大允許1024KB,即1MBsuccess: function () {    //顯示進度提示    $("#indicator").css("display", "block");    //清空提示內容    $("#msg").text("");    if ($("#fn").text().length > 0) {//刪除圖片deleteImg();    }        //上傳文件數據準備    var fd = new FormData();    fd.append("image", $("#file")[0].files[0]);    $.ajax({url: "@Url.Action("UploadFile","Home")",type: "POST",data: fd,contentType: false,cache: false,processData: false,dataType: "json",success: function (data) {    //隱藏進度提示    $("#indicator").css("display", "none");    if (data.isvalid) {//$("#fileTemplate").tmpl(data).appendTo("#imgArea");createTableTr();$("#thumb").attr("src", data.filepath);$("#fn").text(data.filename);    } else {$("#msg").text(data.message);     }}     });    },extensionerror: function () {    //alert("允許的格式為:jpg,jpeg,gif,png");    $("#msg").text("允許的格式為:jpg,jpeg,gif,png");    return;},sizeerror: function () {    //alert("最大尺寸1024KB,即1MB");    $("#msg").text("最大尺寸1024KB,即1MB");    return;}    });});//刪除圖片function deleteImg() {    $.ajax({cache: false,url: "@Url.Action("DeleteFileByName", "Home")",type: "POST",data: { smallname: $("#fn").text() },success: function (data) {    if (data.msg) {$("#fn").parent().parent().remove();    }},error: function (jqXhr, textStatus, errorThrown) {    alert("出錯了 "" + jqXhr.status + "" (狀態: "" + textStatus + "", 錯誤為: "" + errorThrown + "")");}    });}//創建表格function createTableTr() {    var table = $("#tbl");    table.append("<tr><td><img id="thumb" /></td><td colspan="2"><span id="fn"></span></td></tr>");}    </script>}

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: ASP.NET
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线观看中文字幕| 免费人成精品欧美精品| 国产一区二区三区自拍| 国产福利资源一区| 夜夜嗨网站十八久久| 欧洲一区二区三区精品| 你懂的国产精品永久在线| 99视频一区| 色婷婷久久久| jizzjizz中国精品麻豆| 久久一区欧美| 国产精品久久亚洲不卡| 视频一区在线播放| 欧美日中文字幕| 亚洲黄色免费av| 精品中文字幕一区二区三区四区| 国产日韩一区二区三区在线 | 欧美激情日韩| 欧美视频精品全部免费观看| 在线日韩成人| 亚洲视频www| 99香蕉国产精品偷在线观看| 美女网站一区| 国产在线日韩| 亚洲成人日韩| 黄色欧美日韩| 免费视频久久| 亚洲欧美日韩视频二区| 香蕉成人av| 国产精品成人一区二区不卡| 久久精品理论片| 国产成人免费| 国产精品99一区二区三区| 久久这里只有精品一区二区| 久久av日韩| 尤物精品在线| 中文一区在线| 成人一区而且| 日韩大片在线播放| 日韩免费看片| 欧美va天堂在线| 一本色道久久精品| 亚洲精品女人| 国产日韩欧美三区| 国产精品亚洲欧美一级在线| 国产精品99久久久久久董美香| 国产精品一区二区精品视频观看| 日韩**一区毛片| 欧美亚洲专区| 国产精品国产一区| 国产精品国产一区| 99精品国产一区二区三区| 久久影视一区| 免费看精品久久片| 一区二区三区国产在线| 亚洲精品免费观看| 国产精品久久久久毛片大屁完整版| 国产中文欧美日韩在线| 91精品韩国| 久久福利毛片| 国产日韩三级| 日韩电影免费网址| 蜜桃成人av| 亚洲久久视频| 欧美偷窥清纯综合图区| 岛国精品一区| 久久中文字幕av一区二区不卡| 欧美日韩国产高清电影| 亚洲精品日韩久久| 久久免费视频66| aa亚洲婷婷| 日韩综合一区二区| 高潮久久久久久久久久久久久久| 久久在线免费| 亚洲精品极品| 精品视频在线观看网站| 日韩午夜精品| 国产亚洲一区二区三区啪| 国产精品一区三区在线观看| 日韩一区自拍| 亚洲欧美久久精品| 成人高清一区| 男女男精品网站| 成人在线黄色| 亚洲精品第一| 捆绑调教美女网站视频一区| 亚洲精品无播放器在线播放| 石原莉奈在线亚洲三区| 在线亚洲成人| 国产精品一页| 伊人久久婷婷| 欧美精品aa| 好看不卡的中文字幕| 在线看片不卡| 黄色在线网站噜噜噜| 国产黄色一区| 亚洲激情五月| 中文一区一区三区免费在线观| 麻豆久久精品| 日韩电影二区| 久久激情综合网| 久久亚洲电影| 国内不卡的一区二区三区中文字幕| 在线亚洲欧美| 99久久www免费| 国产精品777777在线播放 | 日韩亚洲精品在线观看| 亚洲男女av一区二区| 国产精东传媒成人av电影| 亚洲黄页一区| 国内精品伊人| 欧美日本久久| 亚洲大片在线| 久久久久观看| 青青国产91久久久久久| 9色国产精品| 日韩精品dvd| 国产精品日本一区二区不卡视频 | 91成人在线精品视频| а√天堂中文在线资源8| 蜜桃av一区二区三区电影| 久久久久久久久99精品大| 国产夫妻在线| 成人在线视频免费看| 精品一区av| 麻豆91在线播放| 国产欧美三级| 日本美女一区| 日韩欧美三级| 超碰在线99| 日韩精品永久网址| 日韩精品dvd| 色婷婷精品视频| av日韩中文| 丰满少妇一区| av综合电影网站| 日韩成人精品一区| 国产一区二区三区久久 | 精品视频网站| 精品一区二区三区免费看| 久久精品国产99国产| 精品国产一区二| 日韩国产在线| 亚洲国产一区二区在线观看| 在线观看免费一区二区| 国产精品毛片在线| 亚洲精品123区| 蜜臀精品久久久久久蜜臀 | 亚洲成人精选| 视频一区中文字幕国产| 日韩视频1区| 麻豆91在线播放| 亚洲天堂免费电影| 好看不卡的中文字幕| 视频一区国产视频| 欧美一区二区三区免费看| 国产精品1区| 免费在线成人| 精品三级久久| 一区二区亚洲精品| 亚洲免费毛片| 麻豆成人av在线| 久久久久国产精品一区三寸| 欧美日韩国产欧| 视频国产精品| 精品视频国内| 激情综合激情| 日韩精品亚洲一区二区三区免费| 国产精品久久久久久久免费软件| 久久中文欧美| 亚洲午夜一级| 亚洲精品福利| 国产日韩精品视频一区二区三区| 精品国产乱码久久久| 在线视频观看日韩| 亚洲免费福利一区| 国产福利91精品一区二区| 99久久婷婷| 日韩一区二区三区免费视频| 精品亚洲成人| 99在线精品免费视频九九视| 91精品一区| 久久精品一区二区不卡| 日本v片在线高清不卡在线观看| 精品少妇av| 老司机久久99久久精品播放免费| 欧美一区=区三区| 日本不良网站在线观看| 丝袜国产日韩另类美女| 精品国产三区在线| 尹人成人综合网| 久久精品国产网站| 老色鬼久久亚洲一区二区| 98精品久久久久久久| 亚洲日本国产| 99视频精品视频高清免费| 日本天堂一区| 99国产精品久久久久久久成人热| 国产精品久久久久久模特| 亚洲一区网站|