2

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

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

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

  1. 客户端 -> asp 页面 -> ftp 服务器
  2. 客户端 <- ftp 服务器

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

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

4

3 回答 3

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 响应文件附件讨论

于 2013-03-24T01:34:28.697 回答
0

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

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

这是关于在 ASP.NET 中下载文件的 SO 问题

于 2013-03-24T01:21:50.497 回答
0

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

用户很可能是网络服务。

于 2013-03-24T01:10:11.653 回答