上传文件windows窗体C#web服务

上传文件windows窗体C#web服务,c#,web-services,file-upload,webclient,C#,Web Services,File Upload,Webclient,我是新来的 请帮帮我 我正在使用web服务并上传文件 这是我上传文件的代码 private void Button_Click(object sender, RoutedEventArgs e) { testServiceClient = new TestServiceClient(); var uploadFile = "C:\\Computer1\\Sample.csv"; try {

我是新来的

请帮帮我

我正在使用web服务并上传文件

这是我上传文件的代码

   private void Button_Click(object sender, RoutedEventArgs e)
    {
        testServiceClient = new TestServiceClient();

        var uploadFile = "C:\\Computer1\\Sample.csv";

        try
        {
            var dir = @"\\Computer2\UploadedFile\";
            string myUploadPath = dir;
            var myFileName = Path.GetFileName(uploadFile);

            var client = new WebClient { Credentials = CredentialCache.DefaultNetworkCredentials };

            client.UploadFile(myUploadPath + myFileName, "PUT", uploadFile);
            client.Dispose();

            MessageBox.Show("ok");

            testServiceClient.Close();
        }
        catch (Exception ex)
        {
            ex.ToString();
        }

    }
我可以在同一个网络上传文件,但我的问题是

当两台计算机不在同一网络中时,如何上载文件

我已经试着换了衣服

var dir = @"\\Computer2\UploadedFile\"; 

但我收到一个错误“无法连接到远程服务器”


请帮帮我。

我认为问题在于,您实际上并不是使用
UploadFile()方法发送文件,而是发送文件路径。您应该发送文件字节


此链接非常有用:

我认为问题在于,您实际上并不是使用
UploadFile()方法发送文件,而是发送文件路径。您应该发送文件字节

此链接非常有用:

在windows中:

private void uploadButton_Click(object sender, EventArgs e)
{
    var openFileDialog = new OpenFileDialog();
    var dialogResult = openFileDialog.ShowDialog();    
    if (dialogResult != DialogResult.OK) return;              
    Upload(openFileDialog.FileName);
}

private void Upload(string fileName)
{
    var client = new WebClient();
    var uri = new Uri("https://Computer2/UploadedFile/");  
    try
    {
        client.Headers.Add("fileName", System.IO.Path.GetFileName(fileName));
        var data = System.IO.File.ReadAllBytes(fileName);
        client.UploadDataAsync(uri, data);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
在服务器中:

[HttpPost]
public async Task<object> UploadedFile()
{
    var file = await Request.Content.ReadAsByteArrayAsync();
    var fileName = Request.Headers.GetValues("fileName").FirstOrDefault();
    var filePath = "/upload/files/";
    try
    {
        File.WriteAllBytes(HttpContext.Current.Server.MapPath(filePath) + fileName, file);           
    }
    catch (Exception ex)
    {
        // ignored
    }

    return null;
}
[HttpPost]
公共异步任务UploadedFile()
{
var file=wait Request.Content.ReadAsByteArrayAsync();
var fileName=Request.Headers.GetValues(“fileName”).FirstOrDefault();
var filePath=“/upload/files/”;
尝试
{
File.writealBytes(HttpContext.Current.Server.MapPath(filePath)+文件名,文件);
}
捕获(例外情况除外)
{
//忽略
}
返回null;
}
在windows中:

private void uploadButton_Click(object sender, EventArgs e)
{
    var openFileDialog = new OpenFileDialog();
    var dialogResult = openFileDialog.ShowDialog();    
    if (dialogResult != DialogResult.OK) return;              
    Upload(openFileDialog.FileName);
}

private void Upload(string fileName)
{
    var client = new WebClient();
    var uri = new Uri("https://Computer2/UploadedFile/");  
    try
    {
        client.Headers.Add("fileName", System.IO.Path.GetFileName(fileName));
        var data = System.IO.File.ReadAllBytes(fileName);
        client.UploadDataAsync(uri, data);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
在服务器中:

[HttpPost]
public async Task<object> UploadedFile()
{
    var file = await Request.Content.ReadAsByteArrayAsync();
    var fileName = Request.Headers.GetValues("fileName").FirstOrDefault();
    var filePath = "/upload/files/";
    try
    {
        File.WriteAllBytes(HttpContext.Current.Server.MapPath(filePath) + fileName, file);           
    }
    catch (Exception ex)
    {
        // ignored
    }

    return null;
}
[HttpPost]
公共异步任务UploadedFile()
{
var file=wait Request.Content.ReadAsByteArrayAsync();
var fileName=Request.Headers.GetValues(“fileName”).FirstOrDefault();
var filePath=“/upload/files/”;
尝试
{
File.writealBytes(HttpContext.Current.Server.MapPath(filePath)+文件名,文件);
}
捕获(例外情况除外)
{
//忽略
}
返回null;
}

我可以在网络中上传文件,但当我将目录更改为http时,我无法上传…因为在网络上可以通过网络查看文件。。。因此,您必须直接发送文件的字节。我可以在网络中上载文件,但当我将目录更改为http时,我不能…因为在网络上可以通过网络查看文件。。。因此,您必须直接发送文件的字节。