用c#如何实现将生成的XML文件自动下载到客户端指定目录?

也就是说用户在浏览asp.net页面时只要输入想要保存文件的路径(如c:\xmlpath)然后单击按钮即可将服务器上的XML文件自动下载到本地c:\xmlpath目录。
请问该如何实现?
问题点数:40、回复次数:15
Top


1 楼The123(Shall We Dance? :))回复于 2004-09-02 23:14:01 得分 10string filename = "file.txt";
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.Flush();
Response.WriteFile(filename);

Top

2 楼noimpulse(堕落天使)回复于 2004-09-02 23:49:30 得分 0 用WebClient也可以,简单
Top

3 楼ilonliu(ilonliu)回复于 2004-09-02 23:58:14 得分 0 noimpulse(堕落天使) :能否说具体一些,谢了!
Top

4 楼Nicholasqpl(【快乐|我灌我灌我灌灌灌|快乐】)回复于 2004-09-03 00:20:59 得分 15一个上传并下载文件的简单例子
简单描述 在此处输入简单摘要
以下是上传文件的三个必要函数(用于处理文件名和上传的路径):
#region 获得文件的后缀名吧
//得到修改后的上传文件名
public static string getImageAddress(string ss)
{
string lkk="";
for(int i=ss.Length;i>0;i--)
{
char lk=ss[i-1];
if(lk=='.')
{
lkk=ss.Substring(i-1);
break;
}
}
return lkk;
}
#endregion

#region 得到修改后的绝对路径
//得到修改后的绝对路径(用于存图片)
public static string getPhysicalPath(string ss)
{
string lkk="";
for(int i=ss.Length;i>0;i--)
{
char lk=ss[i-1];
if(lk=='\\')
{
lkk=ss.Substring(0,i-1);
break;
}
}
return lkk;
}
#endregion

#region 下载文件的虚拟路径

//得到修改后的虚拟路径(用于取图片)
public static string getDummyPath(string ss)
{
string lkk="";
for(int i=ss.Length;i>0;i--)
{
char lk=ss[i-1];
if(lk=='/')
{
lkk=ss.Substring(0,i-1);
break;
}
}
return lkk;
}

#endregion


接下来是一个简单的实现例子:

//上传文件的事件
private void addImage_Click(object sender, System.EventArgs e)
{
//提供访问客户端已经上载的各个文件的方法
HttpPostedFile UpFile=FileUp.PostedFile;
//得到上传文件的后缀名
string fileExe=(System.IO.Path.GetExtension(UpFile.FileName)).ToString().ToLower();

string fileName=getImageAddress(UpFile.FileName);
fileName = "秦培凌002" + fileName;
//把上传的图片文件存储到相对路径下
//"FTP"是和上传页面同级的附件夹
UpFile.SaveAs(getPhysicalPath(Request.PhysicalPath)+"\\FTP\\" + fileName);

//把上传后的路径记下
this.TextBox1.Text = getDummyPath(Request.FilePath)+"/FTP/"+fileName;
}


//最后是一个下载文件的事件
private void btu_dnow_Click(object sender, System.EventArgs e)
{
string filePath = Server.MapPath(this.TextBox1.Text);
if(File.Exists(filePath) == false)
{
//服务器上没有这个文件
return;
}
Page.Response.Clear();
Page.Response.AddHeader( "Content-Type", "image/gif" );
Page.Response.AddHeader("Content-Disposition", "inline;filename=" + filePath);
Page.Response.WriteFile(filePath);
Page.Response.End();
}


至于要下载到客户端指定的地方的话,你就用cookies来指定路径
Top

5 楼andiy(宝女)回复于 2004-09-03 02:38:50 得分 0 up!
Top

6 楼saucer(思归)回复于 2004-09-03 03:27:49 得分 15这是个安全问题,如果随便都可以这么做的话,谁能阻挡你下载病毒程序到客户机器上去呢?

如果你在LAN上,可以控制用户的ActiveX安全设置,你可以使用XMLHTTP + FSO或ADODB.STREAM对象来实现, 参考

http://netnerds.net/articles/149.aspx



var objXML = new ActiveXObject("Microsoft.XMLHTTP");
var strURL = 'yourpage.xml';
objXML.open('GET',strURL,false);
objXML.send();

var fso = new ActiveXObject("Scripting.FileSystemObject");
var fs = fso.CreateTextFile("d:\\ResultPage.xml",2,true);
fs.write(objXML.responseText);
fs.close();
fs = null;
fso = null;
objXML = null;

Top

7 楼ilonliu(ilonliu)回复于 2004-09-03 22:11:33 得分 0 谢saucer(思归/MVP):var strURL = 'yourpage.xml';这一句起什么作用?
Top

8 楼saucer(思归)回复于 2004-09-03 22:16:12 得分 0 你下载文件的URL,限于当前网页所在的域
Top

9 楼xhwy888(學海無涯)回复于 2004-09-03 22:19:22 得分 0 up
Top

10 楼ilonliu(ilonliu)回复于 2004-09-03 22:23:11 得分 0 ‘d:\\ResultPage.xml’是下载到客户端的文件名吧?
Top

11 楼saucer(思归)回复于 2004-09-03 22:35:51 得分 0 yes, the one used for XMLHTTP is the url for the server, the one used in fso.CreateTextFile is a 客户端的 local path
Top

12 楼noimpulse(堕落天使)回复于 2004-09-03 22:57:25 得分 0 不好意思,System.Net.WebClient的DownloadFile方法只能把文件下载到服务端.
Top

13 楼ilonliu(ilonliu)回复于 2004-09-04 15:13:33 得分 0 saucer(思归/MVP) :以下語句用c#怎麼寫?

var objXML = new ActiveXObject("Microsoft.XMLHTTP");
var strURL = 'yourpage.xml';
objXML.open('GET',strURL,false);
objXML.send();

var fso = new ActiveXObject("Scripting.FileSystemObject");
var fs = fso.CreateTextFile("d:\\ResultPage.xml",2,true);
fs.write(objXML.responseText);
fs.close();
fs = null;
fso = null;
objXML = null;
Top

14 楼saucer(思归)回复于 2004-09-04 19:16:35 得分 0 you understand this has to be done on the client side, so one way or the other, you have to use or output javascript
Top

15 楼SuperFC(●捡分e族●)回复于 2004-09-04 22:02:14 得分 0 又长知识了,up

加支付宝好友偷能量挖...


评论(0)网络
阅读(162)喜欢(0)Asp.Net/C#/WCF