我正在本地系统上动态创建HTML文件(使用HTMLTEXTWRITER),然后使用Streamwriter保存到本地文件系统。我想将此文件复制到我的远程服务器上,以便我的用户可以阅读该文件,而无需用户交互。我使用C#。例如,我想从d:\ myfile.html复制到mysite.com \ myfile.html,该怎么办?
我正在本地系统上动态创建HTML文件(使用HTMLTEXTWRITER),然后使用Streamwriter保存到本地文件系统。我想将此文件复制到我的远程服务器上,以便我的用户可以阅读该文件,而无需用户交互。我使用C#。例如,我想从d:\ myfile.html复制到mysite.com \ myfile.html,该怎么办?
rPath = "\\" & Request.UserHostAddress & "\c$\temp\"
用于输出文件
rOutput = Session.SessionID & "_" & Format(Date.Now(), "ddMMyyhhmmss") & ".pdf"
有三种方法可以将文件复制到远程服务器。
使用普通文件复制模式。在这里,您需要访问Web服务器共享路径。如果Web服务器与您的应用程序在同一网络中,则可以共享Web根目录并为运行应用程序的用户提供写访问权限。然后他可以使用 File.Copy("source.txt", "\\Servername\SharedFolderName\target.txt")
。
第二种方法是使用FTP将文件复制到远程服务器。 此MSDN示例 将帮助您了解如何执行此操作。这适用于大多数共享托管提供商。
您可以像Tim所述那样使用HTTP POST。但是,这将允许任何用户执行POST。您可能需要处理用户配额、身份验证和授权。在我看来,将其作为最后选择,因为配额用户并为某些路径提供权限可能会变得繁琐。
你的远程服务器是否基于Windows,并且与你的工作机器在同一个工作组或域中?如果是,你可以在服务器上启用Windows文件共享。然后你可以使用以下命令在cmd中复制文件:
copy c:\test.txt \\mysite.com
路径“\\mysite.com”也可以在C#的File.Copy中使用。
否则,你需要在服务器上设置FTP环境,并在C#中使用FTP相关的API。
您不能使用 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(或更安全的协议),在代码中实现并不难。