超难题,多附件(每个附件包含多个文件,且附件,和文件都是可动态添加的)上传问题,望高手给思路!!!!!!!!!!!

时间:2022-08-28 18:11:09
如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)!

现在,我已经把上传单个附件(多个文件,手动增减)的功能做成了一个ascx 用户控件,也成功了

但是还要在一个页面中,实现,可以手动的增加和减少上传附件的数量,而每个附件里的数量也是可以手动改的.这个功能就不知道

咱办了,哪位做过的请给点思路,我现在的问题是,假如我在一个页面动态的增减我做好的用户控件,但是在获取用户上传的的文

件时怎么办,怎么去区分那些<input type="file" />是属于哪个附件的?(在单个附件是我是通过获

取:httpfileconllection 文件集合来取得的)


先给一百分,解决了问题再加分!顶者有分!!

也不知道问题讲清了没有,呵呵,先谢了!

20 个解决方案

#1


没做过,帮你顶;
考虑一下js吧

#2


<input   type= "file "   />
这个东西好象办法区分的!
因为上传的“rar”文件,我们不可能知道到底属于什么,除非自己能给他定义一个范畴,我想这个范畴都应该是大小而不是文件
恩,思路到是有一个
如果允许用户自己上传文件(非压缩),那里可以采用文件类型判断,比如bat,rar,txt 分开放不同的文件夹
如果全部压缩成rar 无能为力了!

-----------------------------------------------
PS:楼主注意,允许别人上传文件最基本的一个东西是,查看文件有无病毒!

#3


http://www.powupload.com/

去看看,下载一个,肯定有你想要的

#4


大家到底没有没看懂我的意思啊,我不是要区分他上传的是什么类型的文件,而是要区分,哪个file control 属于我的哪个附件啊,一个页面里有多个附件,一个附件包含多个文件,下班了,晚上再来看看

#5


我有个flash能批量上传文件 楼主可给email我 我发给你看看

#6


什么格式的文件都能上传 

#7


学习帮顶不要沉了

#8


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)! 

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点:

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗.

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

#9


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)! 

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点:

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗.

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

#10


js动态添加<input   type= "file "   />

#11


要把复杂的问题简单化.

#12


555555555
就是这个不是我设计的啊,要是我设计,肯定是把一个附件就看成一个文件,属于一个附件的就要他自已写上相同的编码区码撒
怎么办?

怎么办?

我老大很牛的,在我面前!我说不动他的!

#13


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)!   

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点: 

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗. 

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

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

这位老兄,你说要压缩是先要用户压还是把他上传的文件程序压?(如果用户压还好点),如果是程序压的话,我又怎么知道

哪些文件压到一起?

#14


顶一下

#15


MicroDeviser 

我的意思是说分几步(也可以说是几个功能界面哟)来完成这个功能:压缩文件(可以选择好几个文件)-上传服务器-解压文件,中间用"下一步"这样的按钮来链接哟,不要把思维局限在一个步来完成.

#16


这位老兄,你说要压缩是先要用户压还是把他上传的文件程序压?(如果用户压还好点),如果是程序压的话,我又怎么知道 
哪些文件压到一起?


你不是说多个文件构成一个附件吗,当然是把这多个相关的文件压缩构成一个附件;有多个附件的话,也可以在一个界面来完成,关键看你怎么布局页面了.

#17


帮顶吧

#18


wangkun9999 

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

其实呢不关压不压缩的问题,多界面的话,我想老大是不会同意的,现在他出差了,人不在,又要我在这两周内把任务做完

现在都过去一周了,怎么办

好了,大家说说,在后台得到用户在input type=file 控件中选择的文件有哪几种方法

除了用httpfileconllection 之外还有什么办法

如果用httpfileconllection 获取这些文件后(这个是不是获取整个页面中所有file control的文件?),

我不知道有没有什么办法可以知道这个httppostfile怎么去跟相应的file control联系起来

#19



<!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=gb2312" />
<title>仿网易126网络硬盘上传 by littlelam</title>
</head>
<script>
//css样式以及部分代码源自126
var TotalFiles = 0;
function AddFiles()
{
    TotalFiles ++;
    var file=document.createElement("input"); 
    file.type = "file";
    file.id = "f"+ TotalFiles.toString();
    file.name = "files"+ TotalFiles.toString(); 
    file.hideFocus = true;
    file.size = 1;
    file.style.cssText = "cursor:pointer; width:1px; border:none; height:32px; padding:0px; margin:0px;position:absolute; opacity:0;filter:alpha(opacity=0);left:-32px !important;left:-5px;left/**/:-3px; font-size:20px;";
    file.onchange = function ()
    {
        for (var i=1;i<=TotalFiles;i++)
        {
            if ($("f"+i.toString())&&$("f"+i.toString())!=this)
            {
                if ($("f"+i.toString()).value == this.value)
                {
                    DelFile(this.id.replace("f",""));
                    AddFiles();
                    window.alert("已有相同文件,无须重复上传");
                    return;
                }
                    
            }
                
        }
        $("s"+TotalFiles.toString()).innerHTML = "<table class=oplist_filelist cellSpacing=0 cellPadding=0 width=\"100%\" border=0><tr class=tr_file><td class=td_pathlist>&nbsp;" + $("f"+TotalFiles.toString()).value +  "</td><td class=td_operate noWrap><span onclick=\"DelFile('"+TotalFiles.toString()+"')\" style=\"cursor:pointer;color:red;font-weight:bloder;\">X&nbsp;移除</span></td></tr></table>";
        this.style.display = "none";
        AddFiles();
CheckUploadDiv();
    };
    $("uploadInput").appendChild(file);
    var div=document.createElement("div"); 
    div.id = "s"+ TotalFiles.toString();
    $("uploadDiv").appendChild(div);

}
function DelFile(str)
{
    $("uploadInput").removeChild($("f"+str));
    $("uploadDiv").removeChild($("s"+str));  
CheckUploadDiv();
}
function CheckUploadDiv()
{
$("divNone").style.display = $("uploadDiv").innerHTML.indexOf("移除")==-1?"":"none";
}
function DelEmpty()
{
    for (var i=1;i<=TotalFiles;i++)
    {
        if ($("f"+i.toString()))
        {
            if ($("f"+i.toString()).value == "")
                $("uploadInput").removeChild($("f"+i.toString()));
        }
            
    }
}
function checkForm()
{
    var HaveFile = false;
for (var i=1;i<=TotalFiles;i++)
    {
        if ($("f"+i.toString()))
        {
            if ($("f"+i.toString()).value != "")
{
HaveFile = true;
break;
}
        }            
    }
if (!HaveFile)
{
window.alert("点击“添加文件”按钮 添加要上传的文件");
return false;
}
$("submitButton").disabled = true;
DelEmpty();
return true;
}
function $(id)
{
return document.getElementById(id);
}
</script>
<style>
a.btn{background-image:url(http://mimg.163.com/netfolder/images/all_toolbar.gif);display:block; background-position:2px -32px; margin:6px 4px;float:left; border:1px solid #bebebe; cursor:pointer; position:relative;}
.addbtn{height:32px;width:100px;}
a.btn:hover{background-position:2px -64px; border:1px solid #d2d2d2; background-color:#FFFFEE;}
</style>
<body>
<FORM METHOD="post" NAME="form1" ACTION="savetofile.aspx" ENCTYPE="multipart/form-data" onSubmit="return checkForm();">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="twp_all">
  
    <tr>
      <td><div class="oplist_op_af_inner" id="buttonDiv"><a href="javascript:AddFiles();" class="btn"><div id="uploadInput" class="addbtn"></div></a>          
        </div>
        </td>
    </tr>
<tr>
      <td>
        <div class="twp_con_div2" id="filePanel">
          <table width="100%" border="0" cellspacing="0" cellpadding="0" class="oplist_filelist">
            <tr class="tbl_inner_title">
              <td class="td_pathlist">文件路径</td>
              <td nowrap class="td_operate">操作</td>
            </tr>
          </table>   
  <div id="uploadDiv"></div>
        </div>
       </td>
    </tr>
<script>AddFiles();</script>  
  <tr>
    <td class="wp_bottom button_bar"><input name="submit" id="submitButton" type="submit" value="开始上传">
      &#160;
     </td>
  </tr>
</table>
</form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace NetDisk
{
public partial class UpFile : System.Web.UI.Page
{
private string Path;
private string DirectoryName = "";
protected void Page_Load(object sender, EventArgs e)
{
Path = Server.MapPath("~/") + "Lam\\";
DirectoryName = (Request["txtDirectoryName"] + "").Replace(".", "").Replace("\\", "").Replace("/", "");
if (!Directory.Exists(Path + DirectoryName + "\\") || DirectoryName.Trim() == "")
Response.Redirect("FolderList.aspx");
txtDirectoryName.Value = DirectoryName;
lDirectoryName.Text = DirectoryName;
if (Request.Files.Count > 0)
{
for (int i = 0; i < Request.Files.Count; i++)
{
if (!System.IO.File.Exists(Path + DirectoryName + "\\" + System.IO.Path.GetFileName(Request.Files[i].FileName)))
{
Request.Files[i].SaveAs(Path + DirectoryName + "\\" + System.IO.Path.GetFileName(Request.Files[i].FileName));
}
else
{
int j = 0;
while (System.IO.File.Exists(Path + DirectoryName + "\\" + System.IO.Path.GetFileNameWithoutExtension(Request.Files[i].FileName) + "(" + j.ToString() + ")" + System.IO.Path.GetExtension(Request.Files[i].FileName)))
j++;
Request.Files[i].SaveAs(Path + DirectoryName + "\\" + System.IO.Path.GetFileNameWithoutExtension(Request.Files[i].FileName) + "(" + j.ToString() + ")" + System.IO.Path.GetExtension(Request.Files[i].FileName));
}
}
Response.Redirect("FileList.aspx?DirectoryName=" + Server.UrlEncode(DirectoryName), true);
}
}
}
}

#20


我顶

#1


没做过,帮你顶;
考虑一下js吧

#2


<input   type= "file "   />
这个东西好象办法区分的!
因为上传的“rar”文件,我们不可能知道到底属于什么,除非自己能给他定义一个范畴,我想这个范畴都应该是大小而不是文件
恩,思路到是有一个
如果允许用户自己上传文件(非压缩),那里可以采用文件类型判断,比如bat,rar,txt 分开放不同的文件夹
如果全部压缩成rar 无能为力了!

-----------------------------------------------
PS:楼主注意,允许别人上传文件最基本的一个东西是,查看文件有无病毒!

#3


http://www.powupload.com/

去看看,下载一个,肯定有你想要的

#4


大家到底没有没看懂我的意思啊,我不是要区分他上传的是什么类型的文件,而是要区分,哪个file control 属于我的哪个附件啊,一个页面里有多个附件,一个附件包含多个文件,下班了,晚上再来看看

#5


我有个flash能批量上传文件 楼主可给email我 我发给你看看

#6


什么格式的文件都能上传 

#7


学习帮顶不要沉了

#8


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)! 

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点:

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗.

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

#9


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)! 

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点:

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗.

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

#10


js动态添加<input   type= "file "   />

#11


要把复杂的问题简单化.

#12


555555555
就是这个不是我设计的啊,要是我设计,肯定是把一个附件就看成一个文件,属于一个附件的就要他自已写上相同的编码区码撒
怎么办?

怎么办?

我老大很牛的,在我面前!我说不动他的!

#13


如题:一个附件可能只包含一个文件也可能包含多个文件(用户有可能把一个文件分成多个文件,)!   

LZ的思路可能太复杂,要是多可能换种思路来做可能好一点: 

一个附件中包含的多个文件的情况可以先通过程序把多个文件压缩成一个包,构成一个附件再上传;上传以后再解压吗. 

主要的要点就是asp.net是有压缩文件和解压文件这样的功能的,lz可以查找下相关资料.

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

这位老兄,你说要压缩是先要用户压还是把他上传的文件程序压?(如果用户压还好点),如果是程序压的话,我又怎么知道

哪些文件压到一起?

#14


顶一下

#15


MicroDeviser 

我的意思是说分几步(也可以说是几个功能界面哟)来完成这个功能:压缩文件(可以选择好几个文件)-上传服务器-解压文件,中间用"下一步"这样的按钮来链接哟,不要把思维局限在一个步来完成.

#16


这位老兄,你说要压缩是先要用户压还是把他上传的文件程序压?(如果用户压还好点),如果是程序压的话,我又怎么知道 
哪些文件压到一起?


你不是说多个文件构成一个附件吗,当然是把这多个相关的文件压缩构成一个附件;有多个附件的话,也可以在一个界面来完成,关键看你怎么布局页面了.

#17


帮顶吧

#18


wangkun9999 

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

其实呢不关压不压缩的问题,多界面的话,我想老大是不会同意的,现在他出差了,人不在,又要我在这两周内把任务做完

现在都过去一周了,怎么办

好了,大家说说,在后台得到用户在input type=file 控件中选择的文件有哪几种方法

除了用httpfileconllection 之外还有什么办法

如果用httpfileconllection 获取这些文件后(这个是不是获取整个页面中所有file control的文件?),

我不知道有没有什么办法可以知道这个httppostfile怎么去跟相应的file control联系起来

#19



<!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=gb2312" />
<title>仿网易126网络硬盘上传 by littlelam</title>
</head>
<script>
//css样式以及部分代码源自126
var TotalFiles = 0;
function AddFiles()
{
    TotalFiles ++;
    var file=document.createElement("input"); 
    file.type = "file";
    file.id = "f"+ TotalFiles.toString();
    file.name = "files"+ TotalFiles.toString(); 
    file.hideFocus = true;
    file.size = 1;
    file.style.cssText = "cursor:pointer; width:1px; border:none; height:32px; padding:0px; margin:0px;position:absolute; opacity:0;filter:alpha(opacity=0);left:-32px !important;left:-5px;left/**/:-3px; font-size:20px;";
    file.onchange = function ()
    {
        for (var i=1;i<=TotalFiles;i++)
        {
            if ($("f"+i.toString())&&$("f"+i.toString())!=this)
            {
                if ($("f"+i.toString()).value == this.value)
                {
                    DelFile(this.id.replace("f",""));
                    AddFiles();
                    window.alert("已有相同文件,无须重复上传");
                    return;
                }
                    
            }
                
        }
        $("s"+TotalFiles.toString()).innerHTML = "<table class=oplist_filelist cellSpacing=0 cellPadding=0 width=\"100%\" border=0><tr class=tr_file><td class=td_pathlist>&nbsp;" + $("f"+TotalFiles.toString()).value +  "</td><td class=td_operate noWrap><span onclick=\"DelFile('"+TotalFiles.toString()+"')\" style=\"cursor:pointer;color:red;font-weight:bloder;\">X&nbsp;移除</span></td></tr></table>";
        this.style.display = "none";
        AddFiles();
CheckUploadDiv();
    };
    $("uploadInput").appendChild(file);
    var div=document.createElement("div"); 
    div.id = "s"+ TotalFiles.toString();
    $("uploadDiv").appendChild(div);

}
function DelFile(str)
{
    $("uploadInput").removeChild($("f"+str));
    $("uploadDiv").removeChild($("s"+str));  
CheckUploadDiv();
}
function CheckUploadDiv()
{
$("divNone").style.display = $("uploadDiv").innerHTML.indexOf("移除")==-1?"":"none";
}
function DelEmpty()
{
    for (var i=1;i<=TotalFiles;i++)
    {
        if ($("f"+i.toString()))
        {
            if ($("f"+i.toString()).value == "")
                $("uploadInput").removeChild($("f"+i.toString()));
        }
            
    }
}
function checkForm()
{
    var HaveFile = false;
for (var i=1;i<=TotalFiles;i++)
    {
        if ($("f"+i.toString()))
        {
            if ($("f"+i.toString()).value != "")
{
HaveFile = true;
break;
}
        }            
    }
if (!HaveFile)
{
window.alert("点击“添加文件”按钮 添加要上传的文件");
return false;
}
$("submitButton").disabled = true;
DelEmpty();
return true;
}
function $(id)
{
return document.getElementById(id);
}
</script>
<style>
a.btn{background-image:url(http://mimg.163.com/netfolder/images/all_toolbar.gif);display:block; background-position:2px -32px; margin:6px 4px;float:left; border:1px solid #bebebe; cursor:pointer; position:relative;}
.addbtn{height:32px;width:100px;}
a.btn:hover{background-position:2px -64px; border:1px solid #d2d2d2; background-color:#FFFFEE;}
</style>
<body>
<FORM METHOD="post" NAME="form1" ACTION="savetofile.aspx" ENCTYPE="multipart/form-data" onSubmit="return checkForm();">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="twp_all">
  
    <tr>
      <td><div class="oplist_op_af_inner" id="buttonDiv"><a href="javascript:AddFiles();" class="btn"><div id="uploadInput" class="addbtn"></div></a>          
        </div>
        </td>
    </tr>
<tr>
      <td>
        <div class="twp_con_div2" id="filePanel">
          <table width="100%" border="0" cellspacing="0" cellpadding="0" class="oplist_filelist">
            <tr class="tbl_inner_title">
              <td class="td_pathlist">文件路径</td>
              <td nowrap class="td_operate">操作</td>
            </tr>
          </table>   
  <div id="uploadDiv"></div>
        </div>
       </td>
    </tr>
<script>AddFiles();</script>  
  <tr>
    <td class="wp_bottom button_bar"><input name="submit" id="submitButton" type="submit" value="开始上传">
      &#160;
     </td>
  </tr>
</table>
</form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace NetDisk
{
public partial class UpFile : System.Web.UI.Page
{
private string Path;
private string DirectoryName = "";
protected void Page_Load(object sender, EventArgs e)
{
Path = Server.MapPath("~/") + "Lam\\";
DirectoryName = (Request["txtDirectoryName"] + "").Replace(".", "").Replace("\\", "").Replace("/", "");
if (!Directory.Exists(Path + DirectoryName + "\\") || DirectoryName.Trim() == "")
Response.Redirect("FolderList.aspx");
txtDirectoryName.Value = DirectoryName;
lDirectoryName.Text = DirectoryName;
if (Request.Files.Count > 0)
{
for (int i = 0; i < Request.Files.Count; i++)
{
if (!System.IO.File.Exists(Path + DirectoryName + "\\" + System.IO.Path.GetFileName(Request.Files[i].FileName)))
{
Request.Files[i].SaveAs(Path + DirectoryName + "\\" + System.IO.Path.GetFileName(Request.Files[i].FileName));
}
else
{
int j = 0;
while (System.IO.File.Exists(Path + DirectoryName + "\\" + System.IO.Path.GetFileNameWithoutExtension(Request.Files[i].FileName) + "(" + j.ToString() + ")" + System.IO.Path.GetExtension(Request.Files[i].FileName)))
j++;
Request.Files[i].SaveAs(Path + DirectoryName + "\\" + System.IO.Path.GetFileNameWithoutExtension(Request.Files[i].FileName) + "(" + j.ToString() + ")" + System.IO.Path.GetExtension(Request.Files[i].FileName));
}
}
Response.Redirect("FileList.aspx?DirectoryName=" + Server.UrlEncode(DirectoryName), true);
}
}
}
}

#20


我顶

#21