fileupload上传文件时,超过默认的4M,点上传,直接进入服务器报错页面,怎么样在上传前,判断上传文件的大小,如果文件超过2M就弹出提示,不让上传呢,或者捕捉报错,不显示服务器的报错页面而显示自己定义的页面呢.
网上搜了一大圈,还是没找到满意的答案.
我知道可以在web.config里改上传大小限制,最大可以改到2G,但这样也不太理想,因为用fileupload服务器读取文件信息是在文件上传完后才读取的,当用户点了一个几百M的文件上传时,结果等半天,才弹出一个提示框,文件过大.......
try catch也捕捉不了异常,好象超过了上传限制,就根本不执行后台的代码了.
用javascript也没找到好方法,网上说ie6能通过,但在ie7中就不行.哪位朋友有什么好的方法,分享一下吧,谢谢啦,
网上搜了一大圈,还是没找到满意的答案.
我知道可以在web.config里改上传大小限制,最大可以改到2G,但这样也不太理想,因为用fileupload服务器读取文件信息是在文件上传完后才读取的,当用户点了一个几百M的文件上传时,结果等半天,才弹出一个提示框,文件过大.......
try catch也捕捉不了异常,好象超过了上传限制,就根本不执行后台的代码了.
用javascript也没找到好方法,网上说ie6能通过,但在ie7中就不行.哪位朋友有什么好的方法,分享一下吧,谢谢啦,
解决方案 »
- NET正则替换问题
- 解决个简单问题,顺便散分,
- 怎么使用eWeBEditor呀?
- IIS下面未将对象实例化...
- 一个查询得问题 ,请各位大哥指点 ---在线 等 ,急!
- 为什么报表的移植这么困难?
- 如何写自定义报错信息?写在哪儿?
- 点击button,刷新其他框架的页面
- 郁闷啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!刚开始接触FreeTextBox3.1.6有些地方不明白,请教高手帮忙
- 用ajax的xmlhttp.send(data)向后台发送请求的时候;,后台没处理,data是个XML数据,是什么原因,如何得到data的值,找了些办法都没成功
- iframe和img同时存在时,在页面弹出对话框时,iframe中的内容不能显示,
- 关于页面事件的问题
文件大小只能去服务器上判断,扩展名可以用客户端的
使用其他控件如
http://www.open-open.com/ajax/Upload.htm
{
Response.Write("<script>alert('文件不能超过2M!');</script>");
}
上传大文件,浏览器会假死直至超时
2、
if (Request.TotalBytes>2*1024*1024)
{
Response.Write("<script>alert('文件不能超过2M!');</script>");
}
这样限制大小是不合理的,因为如果你上传的文件超过web.config里面限制的大小时,更本就不执行服务器。
3、解决的办法,我想到一个,就是把这种形式改成FTP上传。
这个就是对的
if (hf.ContentLength > 0)//是否有图片
{
int fileSize = 0;
fileSize = hf.ContentLength;//取得大小
if (fileSize < 2097152)//判断大小 单位字节
{
}
else
{
MessageBox.Show(this.Page, "图片大小不能超过2M");
return;
}
}
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>图片上传js判断</title>
<script type="text/javascript">
var isimg = true;
var img = null;
function chksize() {
if (img) img.removeNode(true);
img = document.createElement("img");
img.style.position = "absolute";
img.style.visibility = "hidden";
img.width = 0;
img.height = 0;
img.attachEvent("onreadystatechange", orsc);
img.attachEvent("onerror", oe);
document.body.insertAdjacentElement("beforeend", img);
img.src = document.getElementById("flTitleImg").value;
if (isimg == true) {
document.getElementById('imgPreview').src = document.getElementById("flTitleImg").value;
}
}
function oe() {
isimg = false;
alert("您选择的文件不是图片格式!");
document.getElementById('imgPreview').src = '/images/nopic.gif';
document.getElementById("fmUpoload").reset();
} function orsc() {
if (img.readyState != "complete") return false;
if (img.fileSize > 1048576) {
document.getElementById('imgPreview').src = '/images/nopic.gif';
alert("您上传的图片超过了1M,请重新选择!!");
document.getElementById("fmUpoload").reset();
}
}
</script>
</head>
<body>
<form id="fmUpoload" method="post" runat="server" enctype="multipart/form-data" name="fmUpoload">
<table class="style1">
<tr>
<td class="style2"> 图片上传:</td>
<td><input type="file" name="flTitleImg" id="flTitleImg" onchange="chksize()" runat="server"/>
<asp:Button ID="btnUpload" runat="server" Text="上传" onclick="btnUpload_Click" /></td>
</tr>
<tr>
<td class="style2"> 图片预览:</td>
<td><img alt="图片预览" src="/images/nopic.gif" id="imgPreview" style="width:120;height:90px"/></td>
</tr>
</table>
</form>
</body>
</html>
HttpPostedFile upFile = this.FileUpload1.PostedFile;
int fileLength = upFile.ContentLength;//获取上传文件大小,以字节为单位
如LS所说 上传的话 还是用 swfupload 。。可以解决你的问题再大点的话 用 NeatUpload