1. 前台代码
//引用jquery.form.js文件
<script src="jquery.form.js" type="text/javascript"></script>
<input type="file" id="flFile" style="width: 300px;" />
//ajax代码
<script type="text/javascript">
if ($("#flFile").val() != "") {
var ID="123456";
var submitUrl = "test.ashx?method=UpFile&UpFilePath=flFile&ID=" + ID;
$("#forms").ajaxSubmit({
beforeSubmit: function (formData, jqForm, options) {
//上传中
},
url: submitUrl,
type: "post",
dataType: "html",
error: function (e) {
//上传出现问题
},
success: function (data, textStatus) {
//上传完成
}
});
}
</script>
2. 一般处理程序(.ashx)后台代码
private object UpFile(HttpContext context)
{
ReportBLL datashowBll = new ReportBLL();
string _upfilepath = context.Request.QueryString["UpFilePath"];
string ID= context.Request["ID"];
HttpPostedFile _upfile = context.Request.Files[_upfilepath];
//指定上传路径
string toFileFullPath = HttpContext.Current.Server.MapPath("../file/");
string filename = _upfile.FileName.Split('/')[_upfile.FileName.Split('/').Length - 1]; //获取上传文件名称
string extension = filename.Split('.')[filename.Split('.').Length - 1]; //获取上传文件类型
string size = _upfile.ContentLength.ToString();//获取上传文件大小 单位为K
//重新命名保存路径
string newFileName = toFileFullPath + ID+ "." + extension;
//判断文件是否存在 存在删除
if (File.Exists(newFileName))
{
File.Delete(newFileName);
}
//保存新上传的文件至指定目录
_upfile.SaveAs(newFileName);
return "yes";
}
3.需要注意
asp.net在默认情况下,超时时间为90秒,如果90秒内该请求还未有完成,就会返回超时的错误。允许上传文件的大小默认为4M。
如何修改asp.net默认的超时时间与默认上传文件大小的限制呢?
方法如下,打开web.config,找到httpRuntime节,修改maxRequestLength与executionTimeout值即可。
设置大小为100M,超时时间10分钟。
代码示例:
<httpRuntime executionTimeout="600" maxRequestLength="100000" / >
说明:
maxRequestLength:设置最大请求的大小,单位:KB
executionTimeout:设置asp.net超时时间,单位:S(秒)
4.IIS8请求筛选模块被配置为拒绝超过请求内容长度 解除.net上传文件不能超过30M的限制
1.在“Internet Information Services”(IIS)窗口中,展开与您的计算机相对应的节点,然后展开“网站”节点,找到请求筛选,并打开
2.找到隐藏段下面的web.config,右键编辑(或是打开请求筛选-编辑功能设置)
3.修改允许的最大长度字节为你自己需要的,搞定结束。
1M=1048576字节
默认最大允许的字节是30M
菜鸟总结 多存疏漏 感谢指正