fileupload上传文件大小限制.

safew44wqerqwerqwerq 2010-07-22 08:04:43
fileupload上传文件时,超过默认的4M,点上传,直接进入服务器报错页面,怎么样在上传前,判断上传文件的大小,如果文件超过2M就弹出提示,不让上传呢,或者捕捉报错,不显示服务器的报错页面而显示自己定义的页面呢.
网上搜了一大圈,还是没找到满意的答案.
我知道可以在web.config里改上传大小限制,最大可以改到2G,但这样也不太理想,因为用fileupload服务器读取文件信息是在文件上传完后才读取的,当用户点了一个几百M的文件上传时,结果等半天,才弹出一个提示框,文件过大.......
try catch也捕捉不了异常,好象超过了上传限制,就根本不执行后台的代码了.
用javascript也没找到好方法,网上说ie6能通过,但在ie7中就不行.

哪位朋友有什么好的方法,分享一下吧,谢谢啦,
...全文
24326 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
yan1984quan 2011-09-24
  • 打赏
  • 举报
回复
24楼说的好,高手、佩服。
ychen2000 2011-07-29
  • 打赏
  • 举报
回复
24楼不错
kkbac 2010-07-25
  • 打赏
  • 举报
回复
来看lz 名字的.
SK_Aqi 2010-07-25
  • 打赏
  • 举报
回复
判断为好
alex1987214 2010-07-25
  • 打赏
  • 举报
回复
这个是没办法的 不管你如何判断。。都是先上传 后判断。。那时候已经晚了


如LS所说 上传的话 还是用 swfupload 。。可以解决你的问题

再大点的话 用 NeatUpload
xingdongfang 2010-07-24
  • 打赏
  • 举报
回复
直觉告诉我,如果要解决LZ的问题,需要在客户端进行验证

但你是知道的,js是不能访问本地文件的,因为只能借助第三方控件。

我知道swfupload是可以实现这一点的,楼主可以参考一下。
yuxh81 2010-07-23
  • 打赏
  • 举报
回复 1
1。web.config中配置上传文件大小上限

2。后台中判断
  • 打赏
  • 举报
回复 1
[Quote=引用 17 楼 maomao90 的回复:]
引用 16 楼 yangjie2010it 的回复:

有你想要答案的网站: 网站(百度第二),网站(百度第一)

楼主结贴率太低了
[/Quote]
第一次来这提问,所以结率为0,不过感觉大家还是挺热情,谢谢大家的回复,重在分享呵,贴会结的,
kevinlee0206 2010-07-23
  • 打赏
  • 举报
回复 1
后台写代码判断
HttpPostedFile upFile = this.FileUpload1.PostedFile;
int fileLength = upFile.ContentLength;//获取上传文件大小,以字节为单位
as12a 2010-07-23
  • 打赏
  • 举报
回复 1
uploadify,一个jQuery扩展插件,应该能解决LZ问题
让我带你走 2010-07-23
  • 打赏
  • 举报
回复
第二种js判断,选择图片之后就判断是否为图片格式(非后缀名判断,防止改后缀名上传木马),大小

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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>
让我带你走 2010-07-23
  • 打赏
  • 举报
回复
第一种方法:上传之前判断

HttpPostedFile hf = Request.Files[0];//取得控件
if (hf.ContentLength > 0)//是否有图片
{
int fileSize = 0;
fileSize = hf.ContentLength;//取得大小
if (fileSize < 2097152)//判断大小 单位字节
{

}
else
{
MessageBox.Show(this.Page, "图片大小不能超过2M");
return;
}
}
wwfgu00ing 2010-07-23
  • 打赏
  • 举报
回复
<httpRuntime maxRequestLength="51200" executionTimeout="3600" appRequestQueueLimit="10000"/>
lsq667 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qingfeng_wu 的回复:]
1、这是没有办法解决的问题,因为上传的文件要通过网络检测,在本地是很快,但到网上,才几M就很慢了!
2、
if (Request.TotalBytes>2*1024*1024)
{
Response.Write("<script>alert('文件不能超过2M!');</script>");
}
这样限制大小是不合理的,因为如果你上传的文件超过web.config里面限制的……
[/Quote]应用层ftp上传的话是能直接通过代码进行限制,而且上传的速度也较快
守护欢笑 2010-07-23
  • 打赏
  • 举报
回复
<httpRuntime maxRequestLength="51200" executionTimeout="3600" appRequestQueueLimit="10000"/>
这个就是对的
吴青峰 2010-07-23
  • 打赏
  • 举报
回复
1、这是没有办法解决的问题,因为上传的文件要通过网络检测,在本地是很快,但到网上,才几M就很慢了!
2、
if (Request.TotalBytes>2*1024*1024)
{
Response.Write("<script>alert('文件不能超过2M!');</script>");
}
这样限制大小是不合理的,因为如果你上传的文件超过web.config里面限制的大小时,更本就不执行服务器。
3、解决的办法,我想到一个,就是把这种形式改成FTP上传。
forever803 2010-07-23
  • 打赏
  • 举报
回复
<asp:FileUpload ID="FileUpload1" runat="server" />



FileUpload1.FileContent.Length;获取文件大小。
gudengdulang 2010-07-23
  • 打赏
  • 举报
回复
等待答案,学习学习!!
maomao90 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 yangjie2010it 的回复:]

有你想要答案的网站: 网站(百度第二),网站(百度第一)
[/Quote]
楼主结贴率太低了
moonsoup 2010-07-23
  • 打赏
  • 举报
回复
呼唤答案
加载更多回复(17)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧