0

私はここで新しいです、

ここで私を助けてください、

私は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();
        }

    }

同じネットワークでファイルをアップロードできますが、私の質問はこれです、

2 台のコンピューターが同じネットワークにない場合、ファイルをアップロードするにはどうすればよいですか?

私は変更しようとしました

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

var dir = @"https://Computer2/UploadedFile/";

しかし、「リモートサーバーに接続できません」というエラーが表示されます

ここで私を助けてください。

4

2 に答える 2

3

ウィンドウの場合:

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;
}
于 2016-10-24T13:07:35.043 に答える
0

問題は、実際にUploadFile()メソッドでファイルを送信しているのではなく、ファイルパスを送信しているだけだと思います。ファイルバイトを送信する必要があります。

このリンクは非常に便利です: http://www.codeproject.com/Articles/22985/Upload-Any-File-Type-through-a-Web-Service

于 2013-09-09T06:38:00.170 に答える