更新:将文件从服务器复制到服务器

时间:2012-11-14 21:25:22

标签: asp.net filepath server.mappath

好的,只是与我们的服务器管理员交谈,两台服务器都设置了所有权限。 现在我收到一个错误:找不到网络路径。我为这个演示提供了虚拟服务器名称,我使用了错误的名称。我应该尝试使用IP地址仍然会收到此错误。我做错了什么?

'File.Copy("\\sever.name.local.mil\pdf\audits\2009-05-19audit-09-01.pdf", 
 "\\sever.name.remote.mil\sigar_cms\pdf\audits\2009-05-19audit-09-01.pdf")'

有人可以给我一些建议,这让我的大脑变得沉重。

由于

6 个答案:

答案 0 :(得分:3)

Dim FilePath As String = "\\sigar" & "\pdf\audits\" & ""

这将创建字符串\\sigar\pdf\audits\。您可以简化该行:

Dim FilePath As String = "\\sigar\pdf\audits\"

Server.MapPath用于将网站中的虚拟路径转换为服务器上的文件路径。换句话说,您根本不需要使用它。将第二行更改为:

FileUpload1.SaveAs(FilePath + FileName)

如果这不起作用,那么运行应用程序池的标识可能无权在指定路径中写入文件。尝试调整sigar上的共享和/或文件权限。

<强>更新

要复制文件,请使用File.Copy

File.Copy("\\serverA\path\to\file", "\\serverB\path\to\file")

答案 1 :(得分:2)

解答:我明白了。我想使用与用于映射驱动器相同的网络路径。忘了使用$ dollar sign。

 ''# Save files to disk
  FileUpload1.SaveAs(Server.MapPath("../pdf/audits/" & FileName))

 ''# Local Path
  Dim localPath As String = "\\localserver\folder$\pdf\audits\"

 ''# Remote Path
  Dim remotePath As String = "\\remoteserver\folder$\pdf\audits\"

 ''# Copy from Local to Remote servers
  System.IO.File.Copy(localPath + FileName, remotePath + FileName)

答案 2 :(得分:0)

发布的代码有几个问题。如果您有更多代码,我建议发布它。据说,根据我所看到的,阅读这篇MS文章将回答你的问题 - 正如目前所表达的那样。

撰写文字文件Basic File IO

此示例代码使用StreamWriter类来创建和写入文件。如果您有现有文件,则可以以相同方式打开它。

Dim writer As StreamWriter = _
New StreamWriter("c:\KBTest.txt")
writer.WriteLine("File created using StreamWriter class.")
writer.Close()

答案 3 :(得分:0)

假设这两台服务器位于同一本地网络上并且您具有相应的访问权限,则应该能够使用File.Copy方法并为每个服务器/路径使用UNC。

如果情况比仅在两个对等服务器之间复制文件复杂一些,您可能需要考虑使用FTP或SSH作为传输方法。

答案 4 :(得分:0)

自您标记以来,我假设在IIS中的应用程序池下运行的Web应用程序中这样做。

第一个步骤是确保您的应用池用户帐户对您的其他帐户具有写入权限。默认情况下,此帐户类似于IIS_USR

第二个步骤是将文件保存到第二个服务器。

Dim FilePath As String = "\\sigar\pdf\audits\"
Dim FileName As String = "MyFile.txt"

FileUpload1.SaveAs(String.Format("{0}{1}",FilePath, FileName))

您也可以创建自己的写入方法

Dim SourcePath As String = "C:\foo\pdf\audits\"
Dim FileName As String = "MyFile.txt"

Dim FileToCopy As String = String.Format("{0}{1}",SourcePath, FileName)

Dim DestPath As String = "\\sigar\pdf\audits\"

System.IO.File.Copy(FileToCopy, DestPath)

答案 5 :(得分:0)

@Gee我将您的代码调整为从服务器上的一个位置复制到同一服务器上的另一个位置。这段代码有效。首先在你的环境中这样做 - 只是为了确定。

在我看来,它是某种网络访问问题。跨域,用户或组权限或限制等。

Imports System.IO
File.Copy("\\CHI-CSD-06.mycompany.local\temp1\testfile.txt", "\\CHI-CSD-06.mycompany.local\temp2\testfile.txt")