問題:在模態框中添加圖片並不會得到你上傳圖片的名稱,無法存到數據
下面介紹兩個方法,都是可以得到圖片名稱的。
第一種 前面如何加載模態框就不寫了,上篇有寫,這里只是為得到圖片寫的
//需要添加一個JS
<script src="~/Scripts/jquery.form.js"></script> //用來添加圖片的 表單異步提交庫
@*模態框開始*@
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<form method="post" id="mm" enctype="multipart/form-data"> //form 表單需要, <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">模態框(Modal)標題</h4> </div> <div class="modal-body">
<div class="control-group">
<label class="control-label" for="FileUpload1">上傳圖片</label>
<div class="controls">
<input class="input-file uniform_on" id="FileUpload1" name="FileUpload1" type="file">
</div>
</div> </div> </div><!-- /.modal-content --> </div><!-- /.modal -->
</from>
</div>@*模態框結束*@
JS代碼:
//添加 到數據庫 $("#sum").click(function () { //模態框中添加圖片 兩種做法
ajaxSubmit是個方法,引用了form.js這個庫,此方法才有效 $("#mm").ajaxSubmit({ url: "@Url.Action("AddPric")", //訪問這個方法用來得到圖片名稱 type: "post", success: function (data) { img = data; //data就是名稱了 alert(data); });
后台:
/// <summary> /// 圖片名稱 /// </summary> /// <returns></returns> public ActionResult AddPric() { if (Request.Files["FileUpload1"] != null) { string savePath = Server.MapPath("~/Content/img");//建立虛擬路徑,需要存在你的項目中的 //Request.Files["FileUpload"].FileName 上傳文件的完整路徑 //string name = Request.Files["FileUpload1"].ContentType; //image/jpeg string ext = Path.GetExtension(Request.Files["FileUpload1"].FileName); //獲取上傳文件的擴展名 string fileName = ""; switch (ext) { case ".jpg": case ".jpeg": case ".png": case ".gif": case ".bmp": case ".rar": case ".zip": if (Request.Files["FileUpload1"].ContentLength < 1024000) { fileName = Guid.NewGuid().ToString().Substring(0, 8) + ext; //新的圖片名稱 Guid一個36位的隨機數 Request.Files["FileUpload1"].SaveAs(savePath + "\\" + fileName); //保存到項目中 } break; } return Content(fileName); //返回圖片名稱 } else { return Content(""); } }
第二種:
<html> <head> <title>Index</title> <script src="~/Scripts/jquery-1.8.2.js"></script> //這兩個JS需要引用 模板里面的js庫 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> <script> $(function () { $("#btn").click(function () { //將表單封裝成一個表單數據對象 var formData = new FormData($("#ff")[0]); //必 $.ajax({ url: '@Url.Action("aaa")', type: "POST", data: formData, contentType: false, //必須false才會避開jQuery對 formdata 的默認處理 processData: false, //必須false才會自動加上正確的Content-Type success: function (data) { alert(data) } }); }); }); </script> </head> <body> @*//注意:可以將表單代碼放入模態框中,整個提交過程不會刷新頁面,使用AJAX將文件提交到服務器端,之后的處理和一般上傳沒有區別*@ <form action="/" method="post" id="ff" enctype="multipart/form-data"> <div> <input type="text" name="tt" id="tt" /> <input type="file" name="file" id="file" /> <input type="button" value="submit" id="btn" /> </div> <div id="dd"></div> </form> </body> </html>
后台:
public ActionResult aaa() { return Content(Request.Files[0].FileName + "|" + Request.Form[0]); }