Добра. Хочу реализовать проект, но пока не знаю точно как. Идея такова: На локальном сервере\хостинге лежит сайт. Клиент на C# раз в какое-то время берет скрин экрана и отправляет на этот сайт (Может POST запросом как-то). На сайте он выводится. Взять скрин, преобразовать его в byte[] я, допустим, смогу. Вопрос: как реализовать получение\отправку файла? Подскажите, пожалуйста, как это лучше реализовать. Как в C# составить запрос и обработать его в PHP? Ткните носом в методы PHP.
Вы не совсем поняли. Зачем на шарпе писать "велосипед", когда можно сделать батник из двух строк. Отправлять скрин проще тем же WinSCP (https://winscp.net/eng/docs/commandline).
Если Вы уверены, что хотите именно этого, то: Клиентская часть (C#): Code: Rectangle screenDimensions = System.Windows.Forms.Screen.PrimaryScreen.Bounds; Size s = new Size(screenDimensions.Width, screenDimensions.Height); Bitmap screen = new Bitmap(s.Width, s.Height); Graphics memoryGraphics = Graphics.FromImage(screen); memoryGraphics.CopyFromScreen(0, 0, 0, 0, s); string fileName = Path.GetTempFileName(); screen.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); WebClient fileUploader = new WebClient(); fileUploader.UploadFileAsync(new Uri("http://localhost/122/server.php"), "POST", fileName); Серверная (PHP): PHP: <?php$dataDir = __DIR__."/screens/";move_uploaded_file($_FILES['file']['tmp_name'], $dataDir.date("Y_m_d__H_i_s").'.jpg'); Не забудьте предварительно создать на сервере папку(/screens/) и выставить соответствующие права, если будут проблемы с сохранением.
Дальше, как я понимаю, нужно создать отдельную html страничку, на которой js будет тягать из этой папки файлы и выводить. Верный ход мыслей, или можно сделать проще?
Можно пойти несколькими путями, самый простой (но не самый оптимальный, с точки зрения нагрузки) - при обращении к файлу screens.php в той же папке, где и server.php - он производит сканирование директории картинок и выдает в формате: <img src='http://localhost/122/screens/2015_09_21__18_46_19.jpg'><br \> <img src='http://localhost/122/screens/2015_09_21__18_54_32.jpg'><br \> <img src='http://localhost/122/screens/2015_09_21__19_06_31.jpg'><br \> Соответственно, можно либо отдельно использовать (обращаться непосредственно к нему, чтобы все картинки посмотреть), либо вставить полученный результат в нужную Вам страницу. Код screens.php: PHP: <?php$httpCurr = 'http://localhost/122/'; //URL 'путь' до админкиforeach (glob('screens/*.jpg') as $currentGlob) echo "<img src='$httpCurr$currentGlob'><br \>".PHP_EOL; В дальнейшем можно будет легко дописать фильтр, который будет только по определенным датам выводить и т.д.
Да, это отлично, но я столкнулся с ещё одной проблемой. Я называл файл просто img.jpg и перед записью просто удаляю предыдущий. Меня это абсолютно утраивает, так как я хочу видеть экран в реальном времени (с интервалом в секунду). Но беда в том, что браузер запоминает имя файла, кешурует, и выводит постоянно первых, хотя после этого я пересохранил файл уже кучу раз. Как это бороть?
Запрет на кеширование: PHP: header("Cache-Control: no-store, no-cache, must-revalidate");header("Expires: " . date("r"));