繁体   English   中英

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

[英]FTP transfer via ASP.net page

我对开发很陌生,但有一个问题尚未解决。 无论如何,我似乎都找不到是否有可能解决。

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

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

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

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

我可能只是在搜索错误的字词,但希望您能提供任何反馈意见。

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

用户很可能是网络服务。

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

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

这是一个有关在ASP.NET中下载文件的问题

从我们问题的评论讨论中,您似乎希望为用户提供一个选项,用于从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响应文件附件讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM