c# - 使用 webclient 类将文件上传到文件服务器

标签 c# file-upload webclient fileserver

目前我有一个应用程序可以从我的网络应用程序接收上传的文件。我现在需要将该文件传输到恰好位于同一网络上的文件服务器(但情况可能并非总是如此)。

我试图在 C# .NET 中使用 webclient 类。

    string filePath = "C:\\test\\564.flv";
    try
    {
        WebClient client = new WebClient();

        NetworkCredential nc = new NetworkCredential(uName, password);

        Uri addy = new Uri("\\\\192.168.1.28\\Files\\test.flv");
        client.Credentials = nc;
        byte[] arrReturn = client.UploadFile(addy, filePath);
        Console.WriteLine(arrReturn.ToString());
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

位于192.168.1.28的机器是一个文件服务器,有一个共享c:\Files。 截至目前,我收到登录失败的错误用户名或密码错误,但我可以打开资源管理器并输入该路径成功登录。我也可以使用远程桌面登录,所以我知道用户帐户有效。

关于这个错误有什么想法吗? 这样直接传输文件可以吗?使用 webclient 类还是其他类?

最佳答案

就用

File.Copy(filepath, "\\\\192.168.1.28\\Files");

通过 UNC 路径公开的 Windows 文件共享被视为文件系统的一部分,与网络无关。

使用的凭据将是 ASP.NET 工作进程的凭据,或您已启用的任何模拟。如果您可以调整这些以使其正确,则可以做到。

您可能会遇到问题,因为您使用的是 IP 地址而不是服务器名称(Windows 信任设置防止离开域 - 通过使用 IP,您隐藏了任何域详细信息)。 如果可能,请使用服务器名称!

如果这不在同一个 Windows 域中,并且您尝试使用不同的域帐户,则需要将用户名指定为“[domain_or_machine]\[username]”

如果您需要指定明确的凭据,则需要查看 coding an impersonation solution .

关于c# - 使用 webclient 类将文件上传到文件服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263518/

相关文章:

c# - 为什么我需要单例设计模式?

file-upload - Yii 文件字段为空

ASP.NET:FileUpload 控件因长文件名而失败

java - 如何在 Android 中读取文件上传的服务器响应(JSON)?

c# - WebClient DownloadFile 显示错误的百分比

c# - 同时用户在数据绑定(bind) DataGridView 中进行更改时出现问题

Mac 上的 C# 启动进程 - FFMPEG - 退出代码 1

c# - 强类型数据集大放异彩

c# - 如何跟踪使用 WebClient 调用的原始 HTTP 请求?

c# - 从 https URL 下载文件时出现 WebClient 错误