通过ASP.net页面进行FTP传输

时间:2013-03-24 00:56:31

标签: c# asp.net ftp

我对开发很新,我遇到了一个问题,我没有找到解决方案。无论如何,我似乎无法找到是否可能解决..

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

网页充当客户端和ftp服务器之间的中介,并且尽可能地用户友好。例如。用户只需按下下载即可自动从ftp服务器下载而无需使用已安装的本地客户端。

  1. 客户 - > asp页面 - > ftp服务器
  2. client< - ftp server
  3. 我的问题是asp页面没有在客户端系统上创建文件的权限。我已设法连接到ftp并尝试下载文件夹中的所有文件,但文件未出现在目标文件夹中的客户端上。

    我可能只是在寻找错误的条款,但我希望得到任何反馈。

3 个答案:

答案 0 :(得分:0)

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

用户很可能是网络服务。

答案 1 :(得分:0)

您的ASP网站无法直接写入最终用户的系统。试想一下,您希望任何网站都可以直接访问您的文件系统吗?

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

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

答案 2 :(得分: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