您的位置:首页 > 编程语言 > ASP

在Asp.net中如何遍历一个本地目录下的所有文件并上载到Web 服务器上指定的目录中

2007-12-11 16:30 1051 查看
问:
之前知道可以用HtmlInputFile控件指定一个文件并上载到Web 服务器,但是我
需要将一个目录下的所有文件一次性的上载到Web 服务器(遍历该目录),能够实现吗
______________________________________________________________________________________________
答1:
无此权限,把我的密码、资料都传上去了,不成黑客了
需要自已做组件
______________________________________________________________________________________________
答2:
在服务器允许写入的情况下可以实现。
需要添加应用
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));
}

______________________________________________________________________________________________
答3:

楼上的好象不行哦?!

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

______________________________________________________________________________________________
答4:
对不起,刚才我想了想就写上去了,并没有测试。不过下面的代码我测了,可以。
添加应用
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的虚拟目录必须允许写入。但这样做很不安全,不过可以实现你的问题

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

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

______________________________________________________________________________________________
答7:
我也遇到这样的问题,期待,有没有不写控件就可以实现的方法?
______________________________________________________________________________________________
答8:
楼上写的都是对服务器的处理
因为安全问题HtmlInputFile都不充许赋初值
所以我感觉不用组件是不行的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: