在服务器允许写入的情况下可以实现。
需要添加应用
  using System.IO;
在代码中添加(假设你要传的文件是d:\,上传的文件夹为upload)
                           string[] files = null;
files = Directory.GetFiles("d:\\");
int index1,index2;
                            //保持原文件的名称,也可以重新命名
string name;
for(int i = 0;i<files.Length;i++)
{
index1 = files[i].LastIndexOf("\\")+1;
index2 = files[i].Length;
name = files[i].Substring(index1,index2);
this.File1.PostedFile.SaveAs(Server.MapPath("upload\\"+name));
}

解决方案 »

  1.   


        楼上的好象不行哦?!我的建议是用JAVASCRIPT或VBSCRIPT在客户端授权的情况下
    写遍历程序把文件动态添加到<input type="file">当中,
    然后在服务端接收。具体代码没有写过,不过这需要客户端
    开放大于默认权限的权限给脚本语言 :)
      

  2.   

    对不起,刚才我想了想就写上去了,并没有测试。不过下面的代码我测了,可以。   
    添加应用
       using System.Net;
       using System.IO; 
    在代码中添加(假设你要传的文件是d:\test\,上传的地址为http://111.111.111/upload/)
        string[] files = null;
        files = Directory.GetFiles("d:\\test\\");
        int index1,index2;
        //保持原文件的名称,也可以重新命名
        string name;
        for(int i = 0;i<files.Length;i++)
        {
          index1 = files[i].LastIndexOf("\\")+1;
          index2 = files[i].Length;
          name = files[i].Substring(index1,index2-index1);
          WebClient MyWebClient = new WebClient();
          MyWebClient.UploadFile("http://111.111.111/upload/1.txt","PUT",files[i]);

        }
    其中这个upload的虚拟目录必须允许写入。但这样做很不安全,不过可以实现你的问题
      

  3.   

    //保持原文件的名字,修改如下
    MyWebClient.UploadFile("http://111.111.111/upload/"+name,"PUT",files[i]);
      

  4.   

    我一直都在想办法解决这个问题,但现在知道的只能是嵌入JAVA,在时代互联上,解决上传多个文件时,也是采用的JAVA。
    楼上的方法不行的
    “files = Directory.GetFiles("d:\\test\\");”
    这条语句,读取的是服务器端的D:\test内的文件。