【问题标题】:How to upload file to network in c#c#如何将文件上传到网络
【发布时间】:2015-01-19 16:00:16
【问题描述】:

我需要使用 c# 动态上传文件。我可以用 asp.net 做到这一点,但 O 不能用桌面应用程序做到这一点。

我正在通过打开文件对话框上传文件。这是我的代码

string path = "";
        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Attach PMI document";
        fDialog.Filter = "PDF docs|*.pdf|JPG Files|*.jpg|JPEG Files|*.jpeg";
        fDialog.InitialDirectory = @"Desktop";
        if (fDialog.ShowDialog() == DialogResult.OK)
        {

            fileName = System.IO.Path.GetFileName(fDialog.FileName);
            path = Path.GetDirectoryName(fDialog.FileName);
            textBox1.Text = path + "\\" + fileName;


        }

打开文件对话框没有问题。

当我尝试将此代码保存到我的计算机时,它是成功的

       AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();

但是当我尝试将文件复制到网络时,它会给出“提供用户名的错误帐户名格式不正确”

我怎样才能复制它 谢谢。

【问题讨论】:

  • "F\" 缺少一个冒号?您有到 192.168.2.92 的路线吗?如果你开始 -> 运行 -> \\192.168.2.92\Ender\Files\ 会发生什么
  • 好消息@AlexK。我完全错过了!
  • @AlexK。 F 是我的本地磁盘。而 192.168.2.92 是我的服务器计算机的 IP。我的电脑已经使用用户名 asd\ender 和密码 ender 登录到服务器。
  • 请记住现在更改您的凭据。那永远不应该公开。有些小伙子很方便,你知道......
  • 感谢更新,您是否尝试使用有效的 UPN 用户名指定用户名?请参阅我的更新答案。

标签: c# file-upload server


【解决方案1】:

您是否需要网络凭据(用户名、密码)才能访问该特定服务器?如果是这样,您可能想看看设置主体政策,例如:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, negotiation_type);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();

请注意,您必须提供有效的用户名(有关详细信息,请参阅this MSDN 参考)。用户名必须采用 UPN 格式(用户主体名称,格式为类似电子邮件地址的格式),通常表示为:john_doe@example.com 它将需要 Internet 域。

您提供的协商类型将用于处理身份验证 (AD)。更多信息可以找到here

编辑:
如果这种方法没有帮助(例如,当您的服务器未连接到您的域时)并且对您不起作用,您可能需要考虑使用 FTP 客户端。 File.Copy 不支持 URI 格式的字符串,因此 this SO Question 可能也会有所帮助。

【讨论】:

  • 我试过了,如果用户名的格式不正确,则出现此错误帐户名
  • 你能用那个代码更新你的问题吗?不要忘记删除您的凭据 ;-)
  • WindowsIdentity idnt = new WindowsIdentity(用户名,negotiation_type);我对这条线有错误。我可以使用 Windows 身份验证连接此服务器。但我无法使用同一台服务器登录。
  • 我的确切问题是现在连接到服务器。我不知道如何使用 c# 代码登录服务器
  • 这取决于该服务器的配置方式,如果它位于您的域内,您是否可以通过FTP访问该服务器。您是否需要 VPN 或远程桌面来访问该服务器,或者是一个可用的共享,您可以从中做任何您想做的事情?如果您对此有答案,您应该更新您的问题,以便我们提供帮助。但也请查看 Google 和其他 SO 主题 :-)
【解决方案2】:

问题在于服务器权限。所以我的问题在获得许可后就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2011-01-09
    • 2011-01-06
    • 2011-02-05
    • 2012-12-30
    • 2011-01-18
    • 1970-01-01
    • 2016-07-28
    相关资源
    最近更新 更多