【悲剧】想用jQuery + ASP.NET做个多文件上传发现的悲剧。

倒霉熊 2010-09-29 10:34:52
ASP.NET 里面有个自带的上传控件:FileUpload 这个大家都知道,上传文件一句话搞定:
this.FileUpload1.SaveAs(Server.MapPath("UploadFile/") + this.FileUpload1.FileName);


然后我异想天开 this.FileUpload1.FileName 不就是个文件名吗?我直接用JS 从前台把文件名传到后台,多个文件名用 分开,循环一下,那样不久可以上传多个?

结果悲剧了,上传后,文件确实会出现在 UploadFile 文件夹,但是文件大小都是 0 KB 一时让我这个菜鸟迷糊了。哎。。。这应该是只是在UploadFile创建了那个文件吧。

还有,我发现那个啥: this.FileUpload1.FileNamethis.FileUpload1.PostedFile.FileName的结果都是文件名,不知道具体是怎么回事,等待各位大仙们解答.


还有哦,JS 多文件上传具体思路是怎样的啊,我现在是用 js 动态添加了很多 HTML 里面的 file 然后得到里面的文件名然后通过AJAX传递到后台。。。额。。又是一个猜想。。。请做过的大仙们说一下思路
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
z812183667 2010-09-30
  • 打赏
  • 举报
回复
学习了,帮顶,用JS传到后台个文件名是肯定不行的!
马老虎 2010-09-29
  • 打赏
  • 举报
回复
FileUpload1.FileName
获取限定文件名

如果浏览器的安全性比较低 那么可以取得完整的路径。
否则 是只能获得文件名。

还有LZ 有点不明白 客户端和服务器端的区别。。

以前也犯过这样的错。呵呵
wuyq11 2010-09-29
  • 打赏
  • 举报
回复
function AddFile()
{
var strFile="<input name=\"upload_A\" type='file' class='inputText' style='WIDTH:350px;'/><br/>";
document.getElementById("td_uploadFile").insertAdjacentHTML("beforeEnd",strFile);
}
<td id="td_uploadFile" align="center">
<input id="upload_A" name="upload_A" type="file" class="inputText"
style="width: 350px; display:none;" runat="server" />
</td>

HttpFileCollection Files = HttpContext.Current.Request.Files;
for (int i = 0; i < Files.Count; i++)
{

HttpPostedFile PostedFile = Files[i];
if (PostedFile.ContentLength > 0)
{
string FileName = PostedFile.FileName;
string AttachExt = FileName.Substring(FileName.LastIndexOf(".") + 1);
int TotalSize = PostedFile.ContentLength;
}
}
上传组件http://www.open-open.com/ajax/Upload.htm
gongsun 2010-09-29
  • 打赏
  • 举报
回复
this.FileUpload1.SaveAs(Server.MapPath("UploadFile/") + this.FileUpload1.FileName);

----------------------------------------------

比如 你的 图片是 aaa.jpg ccc.jpg... 总共10个 传到后台分割后, string[] filename 装着。

for(int i=1;i<11;i++)
{
FileUpload myfile = page.findcontrol("FileUpload"+i);
myfile.saveas(Server.MapPath("UploadFile/") + filename[i-1])


}

倒霉熊 2010-09-29
  • 打赏
  • 举报
回复
谢谢楼上,呵呵。哎,看来干什么事,都不能光靠自己凭空猜想啊
moonwrite 2010-09-29
  • 打赏
  • 举报
回复
js 多文件上传 就是DHTML创建多个上传的框 html控件就可以了 不用asp.net的
<form id="form1" runat="server" method="post" enctype="multipart/form-data"> 添加这个才能多上传

<script type="text/javascript">
function addFile() {
var div = document.createElement("div");
var f = document.createElement("input");
f.setAttribute("type", "file")
f.setAttribute("name", "File")
f.setAttribute("size", "50")
div.appendChild(f)
var d = document.createElement("input");
d.setAttribute("type", "button")
d.setAttribute("onclick", "deteFile(this)");
d.setAttribute("value", "移除")
div.appendChild(d)
document.getElementById("uploadFile").appendChild(div);
}

function deteFile(o) {
while (o.tagName != "DIV") o = o.parentNode;
o.parentNode.removeChild(o);
}
</script>

<div id="uploadFile">
<input type="file" size="50" name="File" />
<input type="button" value="添加更多附件" onclick="addFile()" />
</div>



获取上传文件

HttpFileCollection files[这个就是上传文件的集合] 其他的自己推理
for (int iFile = 0; iFile < files.Count; iFile++)
{
//获取单个上传控件
HttpPostedFile postedFile = files[iFile];
//获得上传的路径
string localFilePath = postedFile.FileName;

倒霉熊 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gongsun 的回复:]
this.FileUpload1.SaveAs(Server.MapPath("UploadFile/") + this.FileUpload1.FileName);

----------------------------------------------

比如 你的 图片是 aaa.jpg ccc.jpg... 总共10个 传到后台分割后, string[] filename 装……
[/Quote]

三楼你的方法我用了 报错
项目后台管理用户名:liuhuan 密码:liuhuan,其他的注册的用户没有这个权限。 项目为一个小型的健康网站,内容上主要是对健康文章进行相信的分类,用户的参与等实际性功能 本项目包括3个模块,用户模块,后台管理员管理模块,前台显示模块。该项目使用的是asp.net开发环境,中间使用了c#后台编码,html前台显示,css前台排版,javascript前台脚本,jQuery以及jQuery-UI的使用,ajax的局部页面刷新技术,sqlserver数据库的数据存储以及查询更新。 各个文件夹的的作用:Account:用户模块;Admin:后台管理; App_Data:数据库存储;ClassLibrary:公用类模块; CSS:网站css样式模块;DAL:强类型DataSet模块; Home:网站前台模块;Image:网站图片存储模块; JS:前台JS脚本模块;MasterPage:母版页模块; Others:验证码生成文件以及用户自定义控件 项目采用的三层架构设计模式,将表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)很好的显示的表现出来,方便了开发人员的修改以及维护人员的维护,区分层次的目的即为了“高内聚,低耦合”的思想。 (1)、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   (2)、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   (3)、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。 项目不足:第一方面:由于时间的原因,我原来想做的图片浏览模块(模仿百度的图片浏览),首页热图后台编辑选取模块,其实热图后台管理我已经做了一部分了;第二个方面:是css样式在IE9,10上没有问题,但是在IE其他版本,Chrome浏览器上不能保证页面的规范性,有序性,所以我学习的路还是很长的啊。第三方面是:没有生成安装模块,其实这个东西不难做,但是没有时间了,悲剧啊。希望看到该项目的优秀的软件学习者将我没有做完的东西完善,谢谢了。 工程项目评估:其实该项目是我学习阶段做的,主要是将自己学习到的东西应用到自己的项目中,是自己学以致用,原来我学习到的东西不会用,不知道怎么用,不知道用到哪里,通过这个项目,加深了我的理解力,学习能力,编程能力。所以开发这个项目用了我课下业余时间一个月呢!好了,不说太多了,自己做点东西就是对你学习的东西的最好的检测,和测试。
项目为一个小型的健康网站,内容上主要是对健康文章进行相信的分类,用户的参与等实际性功能 本项目包括3个模块,用户模块,后台管理员管理模块,前台显示模块。该项目使用的是asp.net开发环境,中间使用了c#后台编码,html前台显示,css前台排版,javascript前台脚本,jQuery以及jQuery-UI的使用,ajax的局部页面刷新技术,sqlserver数据库的数据存储以及查询更新。 各个文件夹的的作用:Account:用户模块;Admin:后台管理; App_Data:数据库存储;ClassLibrary:公用类模块; CSS:网站css样式模块;DAL:强类型DataSet模块; Home:网站前台模块;Image:网站图片存储模块; JS:前台JS脚本模块;MasterPage:母版页模块; Others:验证码生成文件以及用户自定义控件 项目采用的三层架构设计模式,将表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)很好的显示的表现出来,方便了开发人员的修改以及维护人员的维护,区分层次的目的即为了“高内聚,低耦合”的思想。 (1)、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   (2)、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   (3)、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。 项目不足:第一方面:由于时间的原因,我原来想做的图片浏览模块(模仿百度的图片浏览),首页热图后台编辑选取模块,其实热图后台管理我已经做了一部分了;第二个方面:是css样式在IE9,10上没有问题,但是在IE其他版本,Chrome浏览器上不能保证页面的规范性,有序性,所以我学习的路还是很长的啊。第三方面是:没有生成安装模块,其实这个东西不难做,但是没有时间了,悲剧啊。希望看到该项目的优秀的软件学习者将我没有做完的东西完善,谢谢了。 工程项目评估:其实该项目是我学习阶段做的,主要是将自己学习到的东西应用到自己的项目中,是自己学以致用,原来我学习到的东西不会用,不知道怎么用,不知道用到哪里,通过这个项目,加深了我的理解力,学习能力,编程能力。所以开发这个项目用了我课下业余时间一个月呢!好了,不说太多了,自己做点东西就是对你学习的东西的最好的检测,和测试。
本项目为一个小型的健康网站,内容上主要是对健康文章进行相信的分类,用户的参与等实际性功能 本项目包括3个模块,用户模块,后台管理员管理模块,前台显示模块。该项目使用的是asp.net开发环境,中间使用了c#后台编码,html前台显示,css前台排版,javascript前台脚本,jQuery以及jQuery-UI的使用,ajax的局部页面刷新技术,sqlserver数据库的数据存储以及查询更新。 各个文件夹的的作用:Account:用户模块;Admin:后台管理; App_Data:数据库存储;ClassLibrary:公用类模块; CSS:网站css样式模块;DAL:强类型DataSet模块; Home:网站前台模块;Image:网站图片存储模块; JS:前台JS脚本模块;MasterPage:母版页模块; Others:验证码生成文件以及用户自定义控件 项目采用的三层架构设计模式,将表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)很好的显示的表现出来,方便了开发人员的修改以及维护人员的维护,区分层次的目的即为了“高内聚,低耦合”的思想。 (1)、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   (2)、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   (3)、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。 项目不足:第一方面:由于时间的原因,我原来想做的图片浏览模块(模仿百度的图片浏览),首页热图后台编辑选取模块,其实热图后台管理我已经做了一部分了;第二个方面:是css样式在IE9,10上没有问题,但是在IE其他版本,Chrome浏览器上不能保证页面的规范性,有序性,所以我学习的路还是很长的啊。第三方面是:没有生成安装模块,其实这个东西不难做,但是没有时间了,悲剧啊。希望看到该项目的优秀的软件学习者将我没有做完的东西完善,谢谢了。 工程项目评估:其实该项目是我学习阶段做的,主要是将自己学习到的东西应用到自己的项目中,是自己学以致用,原来我学习到的东西不会用,不知道怎么用,不知道用到哪里,通过这个项目,加深了我的理解力,学习能力,编程能力。所以开发这个项目用了我课下业余时间一个月呢!好了,不说太多了,自己做点东西就是对你学习的东西的最好的检测,和测试。 默认登陆名和密码为:test/test
健康类网站(课程设计)源码 2013.6.8更新内容: 真的很抱歉,今天上传完2.1版本后我就开始测试自己的项目,测试后发现很大的问题, 1用户信息查看模块,2用户修改信息模块,3用户密码修改模块,4用户注册模块。5,后台文章编辑模块,这几个模块出现了很大的问题。真的很对不起支持我的各位同胞们,经过一个小时的测试修改,终于完成了基本的测试修改工作,我以后还会继续努力的,希望各位继续支持我的前进。 2013.6.5更新内容: 新增了图片浏览模块,用户评论,浏览 数据库改变的操作,增加了排序功能,修改了Chrome,IE10 css不兼容问题,该项目是在IE10,Chrome浏览器调试的额,如果显示不规范,请适当的更换浏览器,推荐IE10,Chrome 源码描述: 本项目为一个小型的健康网站,内容上主要是对健康文章进行相信的分类,用户的参与等实际性功能 本项目包括3个模块,用户模块,后台管理员管理模块,前台显示模块。该项目使用的是asp.net开发环境,中间使用了c#后台编码,html前台显示,css前台排版,javascript前台脚本,jQuery以及jQuery-UI的使用,ajax的局部页面刷新技术,sqlserver数据库的数据存储以及查询更新。 各个文件夹的的作用:Account:用户模块;Admin:后台管理; App_Data:数据库存储;ClassLibrary:公用类模块; CSS:网站css样式模块;DAL:强类型DataSet模块; Home:网站前台模块;Image:网站图片存储模块; JS:前台JS脚本模块;MasterPage:母版页模块; Others:验证码生成文件以及用户自定义控件 项目采用的三层架构设计模式,将表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)很好的显示的表现出来,方便了开发人员的修改以及维护人员的维护,区分层次的目的即为了“高内聚,低耦合”的思想。 (1)、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   (2)、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   (3)、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。 项目不足:第一方面:由于时间的原因,我原来想做的图片浏览模块(模仿百度的图片浏览),首页热图后台编辑选取模块,其实热图后台管理我已经做了一部分了;第二个方面:是css样式在IE9,10上没有问题,但是在IE其他版本,Chrome浏览器上不能保证页面的规范性,有序性,所以我学习的路还是很长的啊。第三方面是:没有生成安装模块,其实这个东西不难做,但是没有时间了,悲剧啊。希望看到该项目的优秀的软件学习者将我没有做完的东西完善,谢谢了。 工程项目评估:其实该项目是我学习阶段做的,主要是将自己学习到的东西应用到自己的项目中,是自己学以致用,原来我学习到的东西不会用,不知道怎么用,不知道用到哪里,通过这个项目,加深了我的理解力,学习能力,编程能力。所以开发这个项目用了我课下业余时间一个月呢!好了,不说太多了,自己做点东西就是对你学习的东西的最好的检测,和测试。 默认登陆名和密码为:test/test

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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