不使用ASP.NET中的服务器控件将如何上传文件?
遇到文件的上传时,可能会有大部分的开发者喜欢使用服务器控件,虽然很方便,但是却不能很好的控制,不具灵活性。
现给出例子,使用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(); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。