正在使用Web客户端类将文件上载到文件服务器

本文关键字:文件 上载 文件服务器 客户端 Web | 更新日期: 2023-09-27 17:48:48

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

我试图使用C#中的Web客户端类。NET。

    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。到目前为止,我收到一个登录失败的错误,用户名或密码不正确,但我可以打开资源管理器并成功键入该路径登录。我也可以使用远程桌面登录,所以我知道用户帐户是有效的。

对这个错误有什么想法吗?有可能像那样直接传输文件吗?使用web客户端类或其他类?

正在使用Web客户端类将文件上载到文件服务器

只需使用

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

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

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

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

如果这不在同一个windows域上,并且您试图使用不同的域帐户,则需要将用户名指定为"[domain_or_machine]''[username]"

如果需要指定显式凭据,则需要研究模拟解决方案的编码。

namespace FileUpload
{
public partial class Form1 : Form
{
    string fileName = "";
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        string path = "";
        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Attach customer proposal document";
        fDialog.Filter = "Doc Files|*.doc|Docx File|*.docx|PDF doc|*.pdf";
        fDialog.InitialDirectory = @"C:'";
        if (fDialog.ShowDialog() == DialogResult.OK)
        {
            fileName = System.IO.Path.GetFileName(fDialog.FileName);
            path = Path.GetDirectoryName(fDialog.FileName);
            textBox1.Text = path + "''" + fileName;
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            WebClient client = new WebClient();
            NetworkCredential nc = new NetworkCredential("erandika1986", "123");
            Uri addy = new Uri(@"''192.168.2.4'UploadDocs'"+fileName);
            client.Credentials = nc;
            byte[] arrReturn = client.UploadFile(addy, textBox1.Text);
            MessageBox.Show(arrReturn.ToString());
        }
        catch (Exception ex1)
        {
            MessageBox.Show(ex1.Message);
        }
    }
}
}

当您手动打开IP地址(通过RUN命令或映射网络驱动器)时,您的电脑将通过管道发送凭据,文件服务器将收到DC的授权。

当ASP。Net尝试,然后它将尝试使用IIS工作用户(除非启用模拟,否则会列出一些其他问题)。传统上,IIS工作用户无权跨服务器(甚至在web服务器上的其他文件夹中)工作。