C#.net+JS文件批量上传解决方案附下载(swfupload)【分享】

86y 2011-08-16 10:13:01
加精
因为最近项目需要多文件同时上传所以自己在网上找了下方法。swfupload做到了,所以我把我的C#.net环境的多文件同时上传共享给大家!(本实例最大只能上传500M的数据,如需要上传更大的下面会告诉大家如何设置)

功能完全支持ie和firefox浏览器!

一般的WEB方式文件上传只能一个一个的进行上传,在某些应用上就显得很不人性化,客户们都希望能够1次选择很多文件,然后让系统把选择的文件全部上传。

这里,就将针对这个问题提出一个比较完美的解决方案,利用的技术主要有2个:Flash和smartupload。Flash能够让客户一次选择多个文件,而smartupload负责将选择的文件上传到服务器上。

有些朋友看到这里,就知道了,其实就是swfupload方法,具体信息可以访问swfupload官方网站:http://www.swfupload.org/

让我们先来看看客户端的界面效果图。(多选文件,批量上传,上传进度显示)




要做到图中的效果,其实很方便,看完下面的描述,相信大家都想看看效果了。那就下载吧,附件在最下面。

下面把一些基本的方法告诉大家如何使用

首先是Default.aspx是上传文件的实例。比较简单一般都不需要改什么!下面是一些参数设置

设置文件上传的大小只需要修改Web.config文件中的maxRequestLength即可512000=1024*500得到的所以你可以设置你想要设置的大小!
<httpRuntime executionTimeout="300" maxRequestLength="512000" useFullyQualifiedRedirectUrl="false"/>

文件目录的选择设置

找到根目录里面的upload.aspx的后台代码upload.aspx.cs

string fileName = httpFile.FileName;

string preStr = "";

preStr = System.DateTime.Now.ToString() + "_";

preStr = preStr.Replace("-", "");

preStr = preStr.Replace(":", "");

preStr = preStr.Replace(" ", "");//preStr是为了改变上传的文件名称

string uploadPath = Server.MapPath("temp\\") + preStr + fileName;//在这里取的是相对目录,有个temp文件夹

httpFile.SaveAs(uploadPath);//保存上传的文件

Session["filelist"] += uploadPath + "|";//此方法是为了获取文件的实际地址并且记录下来你可以调用此session,

Response.Write("文件: " + uploadPath + " 上传成功!");//成功返回并显示


好了大家只要下载我这个附件就可以去修改成你想要的效果了。注一定要在IIS下运行。不然上传路径会报错的哦!(完毕)

C#.net文件批量上传解决方案附下载页面
...全文
14349 260 打赏 收藏 转发到动态 举报
写回复
用AI写文章
260 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwhatiscs 2014-02-17
  • 打赏
  • 举报
回复
引用 258 楼 zhangxs4814 的回复:
楼主,我想要上传文件之前,先判断文件大小,这个可以做吗,这个在哪里判断啊
这个控件无法实现,或者Flash控件都无法实现。你可以试下Xproer.HttpUploader5这个控件:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html。此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。 支持浏览器:Internet Explorer 6,Internet Explorer 7,Internet Explorer 8,Internet Explorer 9 Maxthon(遨游)1.x,Maxthon(遨游)2.x,TT浏览器,QQ浏览器,360安全浏览器, Chrome(Google浏览器),Maxthon3.x,360极速浏览器6.x,Firefox 粘贴文件,简化选择文件操作: 文件MD5值计算进度: 文件MD5值计算完毕 服务器根据MD5检测是否存在相同文件 续传文件 从服务器加载文件列表 文件上传中 文件上传完毕 上传文件夹 与Discuz!X2整合-后台安装断点续传控件 与Discuz!X2整合-后台启用断点续传控件 与Discuz!X2整合-后台断点续传控件启用成功 与Discuz!X2整合-前台发帖页面 与Discuz!X2整合-上传 页面调用示例代码:

<!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>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HTTP断点续传控件与MySQL数据库演示页面(UTF-8)</title>
    <link href="HttpUploader/HttpUploader.css" type="text/css" rel="Stylesheet"/>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/FileLister.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/HttpUploader.js"></script>
    <script type="text/javascript" charset="utf-8" src="HttpUploader/combinbox.js"></script>
    <script type="text/javascript" src="HttpUploader/jquery-1.3.2.min.js"></script>
    <script language="javascript" type="text/javascript">
    	var cbItemLast = null;
    	var cbMgr = new CombinBoxMgr();

    	$(document).ready(function()
    	{
    		cbMgr.LoadInControl("FilePanel");
    		cbMgr.Init();
    	});
    </script>
</head>
<body>
	<div id="FilePanel"></div>
</body>
</html>
qian932617506 2013-12-20
  • 打赏
  • 举报
回复
好东西 支持下
zhangxs4814 2013-11-26
  • 打赏
  • 举报
回复
楼主,我想要上传文件之前,先判断文件大小,这个可以做吗,这个在哪里判断啊
zhangxs4814 2013-11-26
  • 打赏
  • 举报
回复
楼主,Default.aspx页面路径我换了下,点击上传就没反映了,JS路径什么的我都改了,难道是固定路径吗?
Maris_zhu 2013-11-01
  • 打赏
  • 举报
回复


请教楼主,,这是什么原因呢。。。现在才看到帖子啊,,,
AlaxLing 2013-10-29
  • 打赏
  • 举报
回复
刚好用上,谢谢分享,超级伟大~!
vanclean 2013-09-02
  • 打赏
  • 举报
回复
下载文件在什么位置,怎么没看到,觉得效果应该很不错。
叶子的翅膀 2012-10-25
  • 打赏
  • 举报
回复
感谢楼主的分享啊
错过V就不在 2012-10-25
  • 打赏
  • 举报
回复
这个要顶一个黑黑 、
candy819 2012-10-18
  • 打赏
  • 举报
回复
不错,收藏了。
86y 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 247 楼 的回复:]

IE9 :“DOM Exception: INVALID_CHARACTER_ERR (5)”错误的原因及解决办法IE9创建DOM元素的方式较之前有了改变,开始严格遵循标准的实现,不允许通过直接传入一个完整html标记的方式来创建Dom元素。


document.createElement('<iframe id="yui-history-iframe" src="../../image……
[/Quote]

测试过吗?
amwriuice398752815 2012-08-29
  • 打赏
  • 举报
回复
IE9 :“DOM Exception: INVALID_CHARACTER_ERR (5)”错误的原因及解决办法IE9创建DOM元素的方式较之前有了改变,开始严格遵循标准的实现,不允许通过直接传入一个完整html标记的方式来创建Dom元素。


document.createElement('<iframe id="yui-history-iframe" src="../../images/defaults/transparent-pixel.gif" style="position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;"></iframe>');




解决方法:

采用标准的方式来实现:

if( $.browser.msie &&/9.0/.test(navigator.userAgent)){
var iframe = document.createElement("iframe");
iframe.setAttribute("class","bgiframe");
iframe.setAttribute("frameborder","0");
iframe.setAttribute("style","display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\'0\');top:expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\');left:expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\');width:expression(this.parentNode.offsetWidth+\'px\');height:expression(this.parentNode.offsetHeight+\'px\');");
this.insertBefore( iframe,this.firstChild );
}else{
this.insertBefore( document.createElement(html),this.firstChild );
}

这是我从网上找的解决方案。大家看下
amwriuice398752815 2012-08-29
  • 打赏
  • 举报
回复
IE9 下非兼容模式中会出现INVALID_CHARACTER_ERR 无效字符。但转成IE9 以下版本就不会报此类错误。此外IE8,9 兼容模式中会出现 243 楼的错误
liuxiaofeigoodluck 2012-08-15
  • 打赏
  • 举报
回复
就找这个东东那,俺也下来看看
86y 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 243 楼 的回复:]

感谢楼主,但我在运行的时候报了一个JS脚本错误呀!
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript……
[/Quote]
什么浏览器呢?
little8107 2012-07-04
  • 打赏
  • 举报
回复
感谢楼主,但我在运行的时候报了一个JS脚本错误呀!
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
}
}

说是对象不支持此属性或方法,这个是怎么回事,找个半天没找到原因
86y 2012-06-30
  • 打赏
  • 举报
回复
[Quote=引用 241 楼 的回复:]

楼主,你给的文件包里一堆js文件是干啥用的?另,里面的sese.aspx和default.aspx可不可以不要?
[/Quote]
sese.aspx是为了显示session。default.aspx是上传页面。你可以把内容换成你要的页面。都可以不用。
不过这个上传还有个FF跟chrome获取不到session!
magic123456 2012-05-15
  • 打赏
  • 举报
回复
楼主,你给的文件包里一堆js文件是干啥用的?另,里面的sese.aspx和default.aspx可不可以不要?
abina 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 239 楼 abina 的回复:]

引用 235 楼 killeverything 的回复:

楼主,如果上传文件到后台,然后更改了文件名,我要是想得得到这个修改好以后的文件名,后台文件怎么输出,swfupload组件才能接收到?

可以直接Response.Write出来就收到 在serverData里
[/Quote]
看错了不好意思
abina 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 235 楼 killeverything 的回复:]

楼主,如果上传文件到后台,然后更改了文件名,我要是想得得到这个修改好以后的文件名,后台文件怎么输出,swfupload组件才能接收到?
[/Quote]
可以直接Response.Write出来就收到 在serverData里
加载更多回复(228)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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