最近工作中用到了一种使用JS+form用post方式上传文件一种方式。前台用Html input,使用JS方式往服务器上传文件,具体实现看代码:
前台页面使用aspx网页,使用input 标签,用其file类型;此标签不使用runat="server".不使用服务器控件;这里需要加上一个iframe标签。并隐藏;设置一a标签。用来作为用户点击按钮;调用JS函数:Uploadfun();
1
2
3
4
5
|
< div >
< input type = "file" id = "FileUpLoad" name = "FileUpLoad" style = "width:140px;" />
< a href = "javascript:void(0);" rel = "external nofollow" onclick = "Uploadfun()" >上传</ a >
< iframe name = "hidden_frame" id = "hidden_frame" style = "width:10%;display:none;" ></ iframe >
</ div >
|
JS代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function Uploadfun(){
var _file = document.getElementById( "FileUpLoad" ); //此处是前台页面的 input 标签的ID
var _form = document.createElenent( "form" ); //创建一个form
document.body.appendChild(_form); //添加一个form
_form.encoding = "multipart/form-data" ; //使用该编码规程可以不限制 post表单2M大小的限制
_form.method= "post" ; //使用POST方式
_form.action= "../Service/FileSrv.aspx?Type=Client&CallFun=UploadFile" ; //此处使用Get方式,传到前台页面的后台Server代码层;
// 这个是本人工作中的项目位置
_form.target = "hidden_frame" ;
var pos = _file.nextSibling;
_form.appendChild(_file);
_form.submit();
pos.parentNode.insertBefore(_file,pos);
document.body.renoveChild(_form);
}
|
C#层代码:就是JS代码中的form的action的所标识。在FileSrv.aspx的后台cs代码中,我们可以通过使用getquery
方法,得到使用Get方式传过来的参数;
这个例子里参数Type=Client是一个模块标识,CallFun则是指出cs代码层要调用的响应函数;UploadFile();
代码如下:
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
|
private void UploadFile()
{
//
//......其他代码
//
HttpFileCollection files = HttpContext.Current.Request.Files;
if (files.Count>0)
{
int lintTemp = files[0].FileName.LastIndexOf( "." ); //得到input标签中的file文件路径;
string lstrFileType = string .Empty;
string lstrContentType = string .Empty;
if (lintTemp!=-1 &&files[0].FileName.Length>lintTemp+1)
{
lstrFileType = files[0].FileName.Substring(lintTemp+1).ToUpper();
}
if (lstrFileType.ToUpper()== "JPG" )
{
if (files[0].ContentLength<10485760)
{
//记得要先保存到应用程序发布所在的服务器上!
files[0].SaveAs(Server.MapPath( "~/Files/" )+ "JPG1." +files[0].FileName.Substring(files[0].FileName.LastIndexOf( "." )));
}
}
}
//
//......其他代码
//
}
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/chenqiangdage/article/details/20225027