asp.net利用ashx文件实现文件的上传功能
原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。
方法一:Form表单提交
html代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>上传文件</title> <script src="Scripts/jquery-1.11.3.min.js"></script> </head> <body> <form action="UploadHandler.ashx" method="post" enctype="multipart/form-data"> <input id="file_upload" name="file_upload" type="file" /> <input id="btn_upload" type="submit" value="上传" /> </form> </body> </html>
UploadHandler.ashx代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebApplication1 { /// <summary> /// UploadHandler 的摘要说明 /// </summary> public class UploadHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; HttpPostedFile file = context.Request.Files["file_upload"]; string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName); file.SaveAs(filePath); context.Response.Write("上传文件成功"); } public bool IsReusable { get { return false; } } } }
该方法虽然能够实现文件的上传,但是form表单提交之后整个页面就刷新了,如果要无刷新上传文件的话,就要使用ajax了。
方法二:jquery + ajax无刷上传
html代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>上传文件</title> <script src="Scripts/jquery-1.11.3.min.js"></script> </head> <body> <input id="file_upload" name="file_upload" type="file" /> <input id="btn_upload" type="button" value="上传" /> <script> $(document).ready(function () { $('#btn_upload').bind('click', function () { var formData = new FormData(); formData.append('upload_file', $('#file_upload')[0].files[0]); $.ajax({ url: 'UploadHandler.ashx', type: 'post', data: formData, contentType: false, processData: false, success: function (msg) { if (msg == "Yes") { alert('文件上传成功'); } else { alert('文件上传失败'); } } }) }); }); </script> </body> </html>
UploadHandler.ashx代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebApplication1 { /// <summary> /// UploadHandler 的摘要说明 /// </summary> public class UploadHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; if (context.Request.Files.Count > 0) { HttpPostedFile file = context.Request.Files["upload_file"]; string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName); file.SaveAs(filePath); context.Response.Write("Yes"); } else { context.Response.Write("No"); } } public bool IsReusable { get { return false; } } } }
个人更推荐方法二,运行结果如下图所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
asp.net core3.1cookie和jwt混合认证授权实现多种身份验证方案
身份验证是确定用户身份的过程。 授权是确定用户是否有权访问资源的过程。本文主要介绍了asp.net core3.1cookie和jwt混合认证授权实现多种身份验证方案,感兴趣的可以了解一下2021-09-09Queryable.Union 方法实现json格式的字符串合并的具体实例
这篇文章介绍了Queryable.Union 方法实现json格式的字符串合并的具体实例,有需要的朋友可以参考一下2013-10-10.NET Core开发日志之OData(Open Data Protocol)
这篇文章主要给大家介绍了关于.NET Core开发日志之OData(Open Data Protocol)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-02-02asp.net mvc webapi 实用的接口加密方法示例
本篇文章主要介绍了asp.net mvc webapi 实用的接口加密方法示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10asp.net使用ajaxFileUpload插件上传文件(附源码)
本文详细讲解了asp.net使用ajaxFileUpload插件上传文件,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-12-12
最新评论