如果上传文件过大怎么办

沈笑菲 2014-10-29 12:32:36
原本的流程 通过iframe实现“无刷新”提交表单,处理完之后返回一段JS来调用页面上的某个方法来实现提交的状态和后续的操作。
这个表单里有个上传按钮,这时候上传的文件(只让传图片),如果上传文件过大(我在配置文件中设置最大为2M),那么页面就进入down状态了,那么该如何捕捉并给出友好的提示呢!
...全文
1159 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
沈笑菲 2014-11-05
  • 打赏
  • 举报
回复
感谢,大家的回答,看起来只能用插件了,flash压根不懂……
我现在在路上 2014-10-31
  • 打赏
  • 举报
回复
可以自己写,也可以用第三方。 自己写就是把文件分块读出,并把每块发送,在服务器端组装
vendyhzx 2014-10-31
  • 打赏
  • 举报
回复
还有还能获取具体内容
vendyhzx 2014-10-31
  • 打赏
  • 举报
回复
说多了无用上段代码吧 //引用一下两个命名空间 //using System.IO.MemoryMappedFiles; //using System.IO; string fliepath = "E:\\softwares\\adobe_photoshop_cs6_33lc.7z";//路径路径 FileInfo fi = new FileInfo(fliepath); long _fileSize = fi.Length; string _fileName = fi.Name; MemoryMappedFile _memoryMappedFile = MemoryMappedFile.CreateFromFile(fliepath, FileMode.OpenOrCreate, _fileName, _fileSize); using (MemoryMappedViewAccessor mmfReader = _memoryMappedFile.CreateViewAccessor()) { byte[] buffer = new byte[mmfReader.Capacity]; int 文件大小M = buffer.Length / 1024 / 1024;//因为这里是字节的所以除以1021*1024 得到的是文件的兆 }
vendyhzx 2014-10-31
  • 打赏
  • 举报
回复
引用 25 楼 qq1746178060 的回复:
控制上传文件大小示例 protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { string serverPath = Server.MapPath("UpLoad"); //获取服务器端目录绝对路径 if (!System.IO.Directory.Exists(serverPath)) //如果不存在该目录 { System.IO.Directory.CreateDirectory(serverPath); //创建该目录 } if (FileUpload1.HasFile) //判断是否选择上传的文件 { int filesize = FileUpload1.PostedFile.ContentLength / 1024 / 1024;//获取上传文件的大小 if (filesize > 8) //如果大于8M { Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('只允许上传不大于8兆的文件');", true); //弹出提示信息 return; }//codego.net/tags/11/1/ else //否则 { //使用SaveAs方法将上传的文件存储到服务器中 FileUpload1.SaveAs(serverPath + "\\" + FileUpload1.FileName); Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('上传成功');", true); } } else //如果没有选择文件 { //弹出提示信息 Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('请选择文件');", true); return; } }
如果上传文件几百兆的话 就会停滞在这段代码 int filesize = FileUpload1.PostedFile.ContentLength / 1024 / 1024;//获取上传文件的大小
qq1746178060 2014-10-31
  • 打赏
  • 举报
回复
控制上传文件大小示例 protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { string serverPath = Server.MapPath("UpLoad"); //获取服务器端目录绝对路径 if (!System.IO.Directory.Exists(serverPath)) //如果不存在该目录 { System.IO.Directory.CreateDirectory(serverPath); //创建该目录 } if (FileUpload1.HasFile) //判断是否选择上传的文件 { int filesize = FileUpload1.PostedFile.ContentLength / 1024 / 1024;//获取上传文件的大小 if (filesize > 8) //如果大于8M { Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('只允许上传不大于8兆的文件');", true); //弹出提示信息 return; }//codego.net/tags/11/1/ else //否则 { //使用SaveAs方法将上传的文件存储到服务器中 FileUpload1.SaveAs(serverPath + "\\" + FileUpload1.FileName); Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('上传成功');", true); } } else //如果没有选择文件 { //弹出提示信息 Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('请选择文件');", true); return; } }
KeepSayingNo 2014-10-31
  • 打赏
  • 举报
回复
如果你是图片,这都有相应的控件,控件本身就有方法控制大小给出提示,如果你是随便上传什么文件,建议有FTP的方式上传,人家要上传大文件,你总不能让人家不传吧
程序猿老曾 2014-10-31
  • 打赏
  • 举报
回复
抱着学习的心态看回答
WM_JAWIN 2014-10-30
  • 打赏
  • 举报
回复
引用 19 楼 chentaoyql 的回复:
[quote=引用 18 楼 WM_JAWIN 的回复:] [quote=引用 16 楼 chentaoyql 的回复:] [quote=引用 14 楼 WM_JAWIN 的回复:] 服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
怎么可能4M... 可以设置的,400M也没问题的 [/quote] 我只能说:呵呵[/quote] 打赌不? 500分,IIS还没愚蠢到这种程度[/quote] 呵呵,正如楼上所说,你设置4T成也没人反对。问题是,设置之后会带什么什么问题
asly310 2014-10-30
  • 打赏
  • 举报
回复
搜索打撒打撒大事
比尔咔咔 2014-10-30
  • 打赏
  • 举报
回复
引用 18 楼 WM_JAWIN 的回复:
[quote=引用 16 楼 chentaoyql 的回复:] [quote=引用 14 楼 WM_JAWIN 的回复:] 服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
怎么可能4M... 可以设置的,400M也没问题的 [/quote] 我只能说:呵呵[/quote] 打赌不? 500分,IIS还没愚蠢到这种程度
WM_JAWIN 2014-10-30
  • 打赏
  • 举报
回复
引用 16 楼 chentaoyql 的回复:
[quote=引用 14 楼 WM_JAWIN 的回复:] 服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
怎么可能4M... 可以设置的,400M也没问题的 [/quote] 我只能说:呵呵
vendyhzx 2014-10-30
  • 打赏
  • 举报
回复
大胖说的没错,系统默认设置是4M,9楼回答的也没错,不过不能用他的方法判断,因为你读取到它的长度后基本也就实现了上传,如果你是一个几十兆,甚至几百兆的文件,读取它长度的时间估计就得几分钟左右,最好的办法就是使用falsh控件,这是目前开源免费最好的之一,我是用过,200~300兆以内+进度条实现效果非常理想,而且实现可以设置上传文件大小,超过大小不做任何操作,ie兼容性较好,但是其他有些浏览器兼容性稍微差些。 或者又有个好的方法就是使用内存映射判断大小,这比起9楼读取length快的太多。
於黾 2014-10-30
  • 打赏
  • 举报
回复
引用 16 楼 chentaoyql 的回复:
[quote=引用 14 楼 WM_JAWIN 的回复:] 服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
怎么可能4M... 可以设置的,400M也没问题的 [/quote] 即使4T也没问题,也没有那么干的 不可能让人等了2个小时把一个好几G的文件上传上去了,然后告诉人家:最大只能上传2M,然后再把上传的文件删除 用户该疯掉了
比尔咔咔 2014-10-30
  • 打赏
  • 举报
回复
引用 14 楼 WM_JAWIN 的回复:
服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
怎么可能4M... 可以设置的,400M也没问题的
moonwrite 2014-10-30
  • 打赏
  • 举报
回复
用一些jquery上传控件~ 要Flash 可以在上传前做一些判断
WM_JAWIN 2014-10-30
  • 打赏
  • 举报
回复
服务端也是靠不住的。asp.net好像默认支持最多4M,超过4M,IIS直接禁止掉,不会进到你的程序。 目前最好的办法估计只能用flash了
S314324153 2014-10-30
  • 打赏
  • 举报
回复
后台先计算下上传文件的大小,再做处理
快跑稻草人 2014-10-30
  • 打赏
  • 举报
回复
JS确实无法判断,你只能是通过后台判断,红孩儿说的对,别怕麻烦。
於黾 2014-10-30
  • 打赏
  • 举报
回复
JS无法判断,不是还有好多控件能判断吗 该加就加 不要怕麻烦
加载更多回复(12)

62,071

社区成员

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

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

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

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