原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。
方法一: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 ;
}
}
}
}
|
该方法虽然能够实现文件的上传,但是form表单提交之后整个页面就刷新了,如果要无刷新上传文件的话,就要使用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 ;
}
}
}
}
|
个人更推荐方法二,运行结果如下图所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/HerryDong/article/details/100549765