2013-03-24 56 views
2

我对开发很陌生,而且我遇到了一个问题,我没有找到解决方案。我似乎无法找到是否有可能或无法解决。无论如何..通过ASP.net进行FTP传输页面

我想创建一个asp页面,允许用户从ftp服务器下载整个文件夹。 ftp服务器本身与asp网站不在同一台物理服务器上。让问题进一步复杂化的是,我想要使用显式或隐式传输,而我似乎无法在浏览器中工作。

该网页充当客户端和ftp服务器之间的中介,并且旨在尽可能地方便用户。例如。用户只需按下载,它就会自动从ftp服务器下载,而无需使用已安装的本地客户端。

  1. 客户端 - > ASP页面 - > FTP服务器
  2. 客户< - FTP服务器

我的问题是,ASP页面没有到客户端系统上创建文件的权限。我设法连接到ftp并尝试下载文件夹中的所有文件,但这些文件不出现在目标文件夹中的客户端上。

我可能只是在寻找错误的条款,但我会很感激任何反馈。

+1

让我看看我是否理解你的权利..在服务器端,1。你能够连接到FTP 2.获取所有文件3.但是,当涉及到存储在客户端的PC上,你有困难?我问的原因是我不认为你可以直接写一个文件到最终用户的硬盘上。你最多可以用“Http Response”对象创建附件并使其可用? – prashantsunkari 2013-03-24 01:08:20

+0

的确,我设法创建一个到ftp的连接并开始下载。把它保存到最终用户的硬盘上是困难的。我只想让网页便于最终用户和ftp之间的连接。我不希望网页从ftp下载任何文件,然后将它们发送给最终用户。 – 2013-03-24 01:13:15

+0

就像我说的,我对开发很新,但是如果我可以设法让某些东西起作用,我肯定会检查“Http Response”。 – 2013-03-24 01:18:55

回答

0

当你说“客户端”我假设你指的是asp.net服务器。在这种情况下,您需要检查您的网站的应用程序池在哪个用户身上运行。然后你需要确保用户有权写入你正在存储ftp文件的文件夹。

用户很可能是网络服务。

+0

不完全正确,“客户端”是指最终用户或最终用户浏览器(客户端)。 – 2013-03-24 01:15:45

0

您的ASP网站将无法直接写入最终用户的系统。试想一下,你想让任何网站直接访问你的文件系统吗?

您可以将文件下载到Web服务器上的临时文件夹中,然后在响应中将其写入以提示用户下载它。

Here is a SO question regarding downloading files in ASP.NET

+0

是的,我得到了许可。这样做的缺点是传输时间将翻倍,因为每次传输都必须通过网络服务器,然后传输到最终用户。另外,如果你想下载一个文件夹90个文件不会得到90“批准下载”或什么提示? – 2013-03-24 01:26:48

+0

您可以将这些文件下载到Web服务器并将其添加到一个zip文件中进行下载。你是正确的,但ASP站点需要花费时间下载每个文件,然后为最终用户的浏览器下载.zip文件。这里是另一个有关下载ZIP文件的SO问题:http://stackoverflow.com/questions/2670263/asp-net-download-all-files-as-zip – 2013-03-24 01:34:32

+0

感谢您的帮助,我会肯定地检查出来。尽管我会不得不修改我对网站功能的初步想法。 – 2013-03-24 01:38:39

0

从我们的问题的评论的讨论,看起来就像你正在寻找提供用户一个选项来下载文件,你已经收集了服务器端从FTP服务器

//Connect to your file 
FileStream sourceFile = new FileStream(Server.MapPath(@"FileName"), FileMode.Open); 
float FileSize= sourceFile.Length; 

//Write the file content to a byte Array 
byte[] getContent = new byte[(int)FileSize]; 
sourceFile.Read(getContent, 0, (int)sourceFile.Length); 
sourceFile.Close(); 

//Build HTTP Response object 
Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Length", getContent.Length.ToString()); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName); 
Response.BinaryWrite(getContent); 
Response.Flush(); 
Response.End(); 

请查看是否以上代码有助于。 另外,检查出HTTP Response file Attachment Discussion