原來以為文件上傳是一個(gè)比較簡單的功能,結(jié)果搞了一個(gè)晚上才搞定~這里主要介紹兩種方法實(shí)現(xiàn)。
方法一:Form表單提交
html代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!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 = "submit" value = "上傳" /> </ form > </ body > </ html > |
UploadHandler.ashx代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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 ; } } } } |
該方法雖然能夠?qū)崿F(xiàn)文件的上傳,但是form表單提交之后整個(gè)頁面就刷新了,如果要無刷新上傳文件的話,就要使用ajax了。
方法二:jquery + ajax無刷上傳
html代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<!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代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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 ; } } } } |
個(gè)人更推薦方法二,運(yùn)行結(jié)果如下圖所示:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/HerryDong/article/details/100549765