不使用ASP.NET中的伺服器控制元件將如何上傳檔案?
阿新 • • 發佈:2018-11-26
遇到檔案的上傳時,可能會有大部分的開發者喜歡使用伺服器控制元件,雖然很方便,但是卻不能很好的控制,不具靈活性。
現給出例子,使用html標籤語言靈活的控制檔案的上傳。
1、html部分
<input type="file" id="uploadFile" name="uploadFile" style="display: none;"/> <a href="#" id="uploads">上傳檔案</a> <input type="hidden" id="txtFile" name="txtFile" value=""/> <div class="img"></div>
2、JS部分
<script type="text/javascript"> $(document).ready(function () { //單擊div觸發檔案的上傳事件 $(".img").click(function() { $("#uploadFile").click(); }); $("#uploads").click(function () { ajaxFileUpload(); }); }); function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/plus/upload.aspx', //用於檔案上傳的伺服器端請求地址 secureuri: false, //是否需要安全協議,一般設定為false fileElementId: 'uploadFile', //檔案上傳域的ID dataType: 'json', //返回值型別 一般設定為json success: function(data, status) //伺服器成功響應處理函式 { $("#img1").attr("src", data.imgurl); $("#txtFile").val(data.imgurl); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } }, error: function(data, status, e) //伺服器響應失敗處理函式 { alert(e); } } ); return false; } </script>
3、uoload.aspx.cs程式碼部分
protected void Page_Load(object sender, EventArgs e) { HttpFileCollection files = Request.Files; string msg = string.Empty; string error = string.Empty; string imgurl = string.Empty; if (files.Count > 0) { string fileUrl = Server.MapPath("/") + "uploadfiles\\scholar\\temp\\"; //獲取web伺服器所在的物理路徑 //若資料夾不存在就建立 if (!Directory.Exists(fileUrl)) { Directory.CreateDirectory(fileUrl); } string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + files[0].FileName.Substring(files[0].FileName.IndexOf('.'));//修改檔名稱 files[0].SaveAs(fileUrl + fileName); //將上傳的檔案儲存到指定伺服器的資料夾中 msg = "上傳成功! 檔案大小為:" + ((float)files[0].ContentLength/(1024*1024)).ToString("0.00") + "MB"; imgurl = "/uploadfiles/scholar/temp/" + fileName; string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}"; Response.Write(res); Response.End(); } }