我在本地系统上动态创建 html 文件(使用 HTMLTEXTWRITER,然后使用 streamwriter 将它们保存到本地文件系统)。我想通过我们的用户交互将此文件复制到我的远程服务器,以便我的用户可以读取文件。我用 C#
例如我想从 d:\myfile.html 复制到 mysite.com\myfile.html,我该怎么做?
我已经使用了它并且它有效。可能有用
用于保持本地路径
rPath = "\\" & Request.UserHostAddress & "\c$\temp\"
用于输出文件
rOutput = Session.SessionID & "_" & Format(Date.Now(), "ddMMyyhhmmss") & ".pdf"
现在:将在 localhost\c\temp 中创建报告
您不能System.IO
为此使用这些类(除非您可以将远程服务器作为网络驱动器访问),但您可以使用System.Net
.
这是使用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
您可以通过三种方式将文件复制到远程服务器。
使用普通文件复制模式。在这里,您需要有权访问网络服务器共享路径。如果网络服务器与您的应用程序在同一个网络中,那么您可以共享 webroot 并为运行应用程序的用户提供写入权限。然后他可以使用File.Copy("source.txt", "\\Servername\SharedFolderName\target.txt")
.
第二种方法是使用 FTP 将文件复制到远程服务器。这个 MSDN 示例将帮助您了解如何执行此操作。这将适用于大多数共享托管服务提供商。
您可以使用Tim所指出的 HTTP POST 。但这会让任何用户执行帖子。您可能需要处理用户配置、身份验证和授权。IMO,将此作为配置用户和提供特定路径权限的最后选项,可能会变得很麻烦。
您是基于 Windows 的远程服务器,并且与您的工作机器在同一个工作组或域中吗?如果是这样,您可以打开服务器上的 Windows 文件共享。然后你可以像这样用 cmd 复制你的文件:
复制 c:\test.txt \\mysite.com
File.Copy 在 C# 中使用的路径“\\mysite.com”也有效。
否则,您需要在服务器上设置 FTP 环境并使用 C# 中的 FTP 相关 API。