【悲剧】想用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传递到后台。。。额。。又是一个猜想。。。请做过的大仙们说一下思路
...全文
190 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]

三楼你的方法我用了 报错

111,130

社区成员

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

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

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