成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

ASP.NET MVC解決上傳圖片臟數據的方法

瀏覽:445日期:2022-06-08 10:46:24

在"在ASP.NET MVC下實現單個圖片上傳, 客戶端服務端雙重限制圖片大小和格式, 服務端裁剪圖片"中,已經實現了在客戶端和服務端限制圖片大小和格式,以及在服務端裁剪圖片。但還有一個重要的話題是需要面對的,那就是圖片臟數據問題。

假設用戶添加產品信息,并且上傳了圖片,可之后用戶沒有點擊頁面上的添加按鈕,這就導致上傳圖片成為"臟數據",存在著卻一直不會被使用。解決這個問題的大致思路是:

  • 在上傳圖片的時候,把圖片保存到一個臨時文件夾,或者叫緩存文件夾
  • 當用戶真正保存的時候,再把臨時文件夾的圖片拷貝到最終目標文件夾

假設,有這樣的一個Model,它的ImageUrl屬性,用來存放圖片真正的相對路徑。

    public class ImgVm
    {
[Required(ErrorMessage = "必填")]
public string ImageUrl { get; set; }
    }

在HomeController中,存在如下的一些Action:

  • 提供一個顯示上傳頁面的Action,并且是ImgVm類型的強類型視圖,ImgVm的ImageUrl屬性用來存放上傳圖片的相對路徑
  • 提供一個接收ImgVm類型的Action,把臨時文件夾內的圖片復制到目標文件夾內,并且給ImgVm的ImageUrl屬性賦上新的圖片相對路徑
public ActionResult Index()
{
    return View(new ImgVm());
}
[HttpPost]
public ActionResult Index(ImgVm imgVm)
{
    if (ModelState.IsValid)
    {
//目標文件夾路徑
string pathForRealSaving = Server.MapPath("~/RealUpload/");
//目標文件夾內的用戶文件夾路徑
string pathForRealUserSaving = Server.MapPath("~/RealUpload/User001/");
//當前文件路徑
string existingFilePath = Server.MapPath(imgVm.ImageUrl);
//當前文件名,根據文件路徑獲得
string existingFileName = Path.GetFileName(existingFilePath);
if (CreateFolderIfNeeded(pathForRealSaving))
{
    if (CreateFolderIfNeeded(pathForRealUserSaving))
    {
//根據當前文件路徑獲取當前文件
var existingfile = Path.GetFullPath(existingFilePath);
//獲取目標文件夾內的目標文件
var realfile = Path.Combine(pathForRealUserSaving, existingFileName);
//把臨時文件內的圖片復制到目標文件夾內
System.IO.File.Copy(existingfile, realfile, true);

//保存新的圖片相對路徑
imgVm.ImageUrl = "RealUpload/User001/" + existingFileName;
    }
}
      
return View("showimg", imgVm);
    }
    else
    {
return Index(imgVm);
    }
}

Home/Index.cshtml中多了在上傳圖片成功后給id為ImageUrl隱藏域賦值的部分。

@model MvcApplication10.Models.ImgVm
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<style type="text/css">
    #msg {
color: red;
    }
</style>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id = "addForm", @class = "form-horizontal"}))
{
    <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>  
    
    <div>
@Html.HiddenFor(m => m.ImageUrl)
<input type="submit" value="提交"/>
    </div>
}
 
@section scripts
{
    <script src="~/Scripts/checkFileTypeAndSize.js"></script>
    <script type="text/javascript">
$(function() {
    $("#file").checkFileTypeAndSize({
allowedExtensions: ["jpg","jpeg","gif","png"],
maxSize: 1024, //最大允許1024KB,即1MB
success: 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);
//清空上傳文件框內容
$("#file").val("");
//給隱藏域賦值
$("#ImageUrl").val(data.filepath);
    } 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>
}

還有一個Home/showimg.cshtml視圖,用來顯示新的(相對臨時文件夾中的那張圖片)圖片。

@model MvcApplication10.Models.ImgVm
@{
    ViewBag.Title = "showimg";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>showimg</h2>
<img src="@Model.ImageUrl"/>

當然,存放上傳圖片的臨時文件夾是可以隨時清理的。

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

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
女生裸体视频一区二区三区| 精品国产欧美一区二区| 一区二区三区精品| 国产精品色噜噜| 中文字幕免费不卡| 国产精品九色蝌蚪自拍| 国产精品每日更新在线播放网址| 亚洲第一成人在线| 午夜久久久久久久久| 日韩精品电影一区亚洲| 欧美aa在线视频| 奇米四色…亚洲| 女人色偷偷aa久久天堂| 一本久久精品一区二区| 在线观看国产日韩| 欧美日韩一区在线| 欧美一区二区三区在线电影 | 91网址在线看| 91亚洲男人天堂| 老司机免费视频久久| 欧美激情综合在线| 国产一区二区毛片| aa级大片欧美| 在线观看一区欧美| 99久久久无码国产精品| 欧美精品一区二区久久婷婷| 天堂va蜜桃一区二区三区漫画版 | 亚洲男人电影天堂| 日韩精品1区2区3区| 99久久精品情趣| 欧美日韩高清在线| 2021国产精品久久精品| 国产精品久久久久aaaa| 国产精品一区二区久激情瑜伽 | 日韩一级完整毛片| 国产视频一区二区在线| 亚洲女人****多毛耸耸8| 成人精品亚洲人成在线| 国产一区欧美| 久久久久久一区二区| 3d动漫精品啪啪一区二区竹菊| 欧美成人女星排行榜| 中文av一区二区| 国产成人av自拍| 亚洲高清视频在线观看| 久久尤物电影视频在线观看| 黄色日韩三级电影| 欧美日韩视频在线一区二区观看视频| 国产精品亚洲综合久久| 欧美高清一级片在线| 欧美国产国产综合| 成人影视亚洲图片在线| 欧美自拍丝袜亚洲| 亚洲欧美日韩国产一区二区三区| 99久久久免费精品国产一区二区| 欧美乱妇15p| 日本vs亚洲vs韩国一区三区二区 | 亚洲色图在线播放| 日韩黄色片在线观看| 亚洲区一区二区三区| 欧美性生活大片视频| 日本一区二区免费在线| 天天av天天翘天天综合网色鬼国产| 国产精品99一区二区| 精品日产卡一卡二卡麻豆| 国产精品99久久久久久似苏梦涵 | 亚洲国产精品二十页| 99天天综合性| 欧美va在线播放| 成人中文字幕电影| 欧美成人vr18sexvr| 高清不卡一区二区在线| 黄色精品一区| 欧美日韩色一区| 亚洲成a人片在线观看中文| 亚洲一区bb| 久久女同精品一区二区| 日韩国产精品久久久久久亚洲| 99久久国产综合精品女不卡| 日韩欧美一区中文| 国产1区2区3区精品美女| 日韩欧美中文字幕公布| 国产91精品在线观看| 欧美一二三区精品| 国产成人在线观看免费网站| 91精品一区二区三区久久久久久 | 亚洲久久一区| 91国产免费观看| 久久精品欧美一区二区三区麻豆| 成人黄色一级视频| 日本电影亚洲天堂一区| 蜜臀va亚洲va欧美va天堂| 中文成人综合网| 亚洲无毛电影| 亚洲激情网站免费观看| 91免费国产视频网站| 精品国产在天天线2019| 91香蕉视频污在线| 中文字幕亚洲精品在线观看| 国产精品亚洲а∨天堂免在线| 7777精品伊人久久久大香线蕉的| 国产精品一区不卡| www精品美女久久久tv| 欧美二区在线| 中文字幕中文字幕一区二区| 亚洲经典三级| 樱花草国产18久久久久| 久久成人资源| 中文字幕在线一区二区三区| 亚洲精品一区二区三| 亚洲资源在线观看| 色综合天天综合色综合av | 午夜精品免费在线| 欧美探花视频资源| 成人性生交大片免费看在线播放| 久久久久国产成人精品亚洲午夜| 精品9999| 一区二区三区在线播| 一本久久a久久精品亚洲| 精品一区二区精品| 国内综合精品午夜久久资源| 26uuu欧美| 激情综合中文娱乐网| 亚洲h在线观看| 欧美精选一区二区| 色综合色综合色综合| 日韩欧美国产精品一区| 精品一区二区三区视频在线观看 | 国产美女在线观看一区| 久久久久免费观看| 免费亚洲电影| 亚洲综合色视频| 欧美日韩精品免费观看视频| 91视频在线观看| 一区二区三区四区视频精品免费 | 欧美va在线播放| 亚洲二区视频| 日本亚洲视频在线| 精品乱人伦一区二区三区| 日韩视频不卡| 精品一区二区三区免费| 欧美韩日一区二区三区| 色婷婷久久一区二区三区麻豆| 成人福利电影精品一区二区在线观看| 18成人在线视频| 欧美亚洲综合网| 欧美日韩精品免费看| 日韩**一区毛片| 日韩精品中文字幕一区| 国产欧美日韩| 欧美国产日韩在线观看| 午夜综合激情| 国产高清不卡一区二区| 亚洲欧美日韩国产手机在线 | 欧洲色大大久久| av在线综合网| 亚洲午夜精品网| 久久久久久一区| 懂色av一区二区三区蜜臀| 自拍视频在线观看一区二区| 欧美性淫爽ww久久久久无| 色综合网色综合| 日本特黄久久久高潮| 国产欧美精品一区| 欧美性猛片aaaaaaa做受| 欧美日韩hd| 中文字幕av一区二区三区高 | 视频一区二区欧美| 久久亚洲私人国产精品va媚药| 香蕉久久夜色| 99在线热播精品免费| 午夜精品免费在线| 日本一区二区电影| 538prom精品视频线放| 国产精品试看| 99精品视频在线免费观看| 日韩电影在线免费| 中文字幕一区二区5566日韩| 日韩视频永久免费| 久久亚洲电影| 在线日韩电影| 成人免费福利片| 日韩vs国产vs欧美| 亚洲色图19p| 精品欧美乱码久久久久久1区2区| 日本高清视频一区二区| av一区二区三区四区| 天堂精品中文字幕在线| 国产精品美女久久福利网站| 欧美一级高清片| 色8久久精品久久久久久蜜| 99视频日韩| 午夜精品久久99蜜桃的功能介绍| 国内不卡的二区三区中文字幕 | 99www免费人成精品| 成人精品一区二区三区中文字幕| 青青青爽久久午夜综合久久午夜| 中文字幕在线播放不卡一区| 亚洲精品在线网站| 欧美一区二区黄|