asp.net利用ashx文件实现文件的上传功能
程序员文章站
2022-03-21 13:51:35
原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。
方法一:form表单提交
html代码:
原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。
方法一: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; } } } }
个人更推荐方法二,运行结果如下图所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。