从本地复制文件到远程服务器

3

我正在本地系统上动态创建HTML文件(使用HTMLTEXTWRITER),然后使用Streamwriter保存到本地文件系统。我想将此文件复制到我的远程服务器上,以便我的用户可以阅读该文件,而无需用户交互。我使用C#。例如,我想从d:\ myfile.html复制到mysite.com \ myfile.html,该怎么办?


2
写入本地文件系统后,您可以使用File.Copy! - Ramesh
谢谢,你能再解释一下吗?可以使用远程地址作为目标吗?我能做类似这样的事情吗:File.Copy(myfile, mysite.com)? - Ali_dotNet
5个回答

2
我已经使用过这个并且它有效。可能会有用。
用于保存本地路径。
rPath = "\\" & Request.UserHostAddress & "\c$\temp\"

用于输出文件

rOutput = Session.SessionID & "_" & Format(Date.Now(), "ddMMyyhhmmss") & ".pdf"

现在:报告将会被创建在 localhost\c\temp。

1

您可以设置一个FTP服务器,并通过FTP编程方式复制文件。例如,您可以在这里这里找到示例。


你能给我一个通过FTP编程发送文件的示例吗? - Ali_dotNet

1

有三种方法可以将文件复制到远程服务器。

  1. 使用普通文件复制模式。在这里,您需要访问Web服务器共享路径。如果Web服务器与您的应用程序在同一网络中,则可以共享Web根目录并为运行应用程序的用户提供写访问权限。然后他可以使用 File.Copy("source.txt", "\\Servername\SharedFolderName\target.txt")

  2. 第二种方法是使用FTP将文件复制到远程服务器。 此MSDN示例 将帮助您了解如何执行此操作。这适用于大多数共享托管提供商。

  3. 您可以像Tim所述那样使用HTTP POST。但是,这将允许任何用户执行POST。您可能需要处理用户配额、身份验证和授权。在我看来,将其作为最后选择,因为配额用户并为某些路径提供权限可能会变得繁琐。


安全性是非常重要的一点,但你所描述的这三种方法都需要以某种方式进行保护。 - Tim M.
谢谢,我不确定网络访问方面的问题,我认为HTTP POST对我来说是最好的选择,我不确定我能否在远程服务器上创建FTP。 - Ali_dotNet
@Tim - 在其他情况下,用户名是在应用程序之外维护的。在HTTP POST中,只需要保护应用程序的特定路径,这可能会增加复杂性。但你说得对,所有三种方法都需要使用用户ID和密码。 - Ramesh

1

你的远程服务器是否基于Windows,并且与你的工作机器在同一个工作组或域中?如果是,你可以在服务器上启用Windows文件共享。然后你可以使用以下命令在cmd中复制文件:

copy c:\test.txt \\mysite.com

路径“\\mysite.com”也可以在C#的File.Copy中使用。

否则,你需要在服务器上设置FTP环境,并在C#中使用FTP相关的API。


1

您不能使用 System.IO 类来实现此操作(除非您可以将远程服务器作为网络驱动器访问),但是您可以使用 System.Net 通过 HTTP 从客户端向远程服务器编程式地 POST 文件。

以下是使用 WebRequest 类的代码片段:

WebRequest request = WebRequest.Create( url );
request.Timeout = 1000; // some appropriate value
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = 0; // set a length here

using( StreamWriter requestStream = new StreamWriter( request.GetRequestStream(), System.Text.Encoding.UTF8) ) {
    // write to the stream here using requestStream.Write();
    requestStream.Close();
}

有关HTTP的更多信息:http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

或者,您可以使用专门用于文件传输的协议,例如FTP(或更安全的协议),在代码中实现并不难。

FTP选项:http://msdn.microsoft.com/en-us/library/ms229718


我使用了你的代码,但是它给了我一些错误,我应该使用什么作为我的URL?目标文件的名称是什么? - Ali_dotNet
我使用requeststream.write写了一些内容,但在requestStream.Close时出现错误:请求已中止:请求已取消,我该如何在服务器上指定我的文件名?我应该如何设置我的URL? - Ali_dotNet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接