 |

17.09.2015, 17:24
|
|
Новичок
Регистрация: 13.07.2015
Сообщений: 17
С нами:
5703446
Репутация:
0
|
|
Добра.
Хочу реализовать проект, но пока не знаю точно как.
Идея такова:
На локальном сервере\хостинге лежит сайт.
Клиент на C# раз в какое-то время берет скрин экрана и отправляет на этот сайт (Может POST запросом как-то).
На сайте он выводится.
Взять скрин, преобразовать его в byte[] я, допустим, смогу.
Вопрос: как реализовать получение\отправку файла?
Подскажите, пожалуйста, как это лучше реализовать.
Как в C# составить запрос и обработать его в PHP?
Ткните носом в методы PHP.
|
|
|

17.09.2015, 17:48
|
|
Новичок
Регистрация: 07.05.2009
Сообщений: 14
С нами:
8953911
Репутация:
0
|
|
Не проще скрин каким нибудь scp отправлять в определенную папку на сервере?
|
|
|

17.09.2015, 20:43
|
|
Новичок
Регистрация: 13.07.2015
Сообщений: 17
С нами:
5703446
Репутация:
0
|
|
Сообщение от ZodiaX
↑
Не проще скрин каким нибудь scp отправлять в определенную папку на сервере?
Ну, возможно и проще. Вы знаете как это сделать на шарпе проще, чем POST запросом?
|
|
|

18.09.2015, 09:41
|
|
Новичок
Регистрация: 07.05.2009
Сообщений: 14
С нами:
8953911
Репутация:
0
|
|
Сообщение от Lavrin
↑
Ну, возможно и проще. Вы знаете как это сделать на шарпе проще, чем POST запросом?
Вы не совсем поняли. Зачем на шарпе писать "велосипед", когда можно сделать батник из двух строк. Отправлять скрин проще тем же WinSCP ( https://winscp.net/eng/docs/commandline).
|
|
|

21.09.2015, 14:40
|
|
Познающий
Регистрация: 23.08.2005
Сообщений: 48
С нами:
10902311
Репутация:
1
|
|
Если Вы уверены, что хотите именно этого, то:
Клиентская часть (C#):
Код:
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]
[COLOR="#000000"][COLOR="#007700"]
|
|
|

21.09.2015, 18:02
|
|
Новичок
Регистрация: 13.07.2015
Сообщений: 17
С нами:
5703446
Репутация:
0
|
|
[QUOTE="hesher"]
↑
Если Вы уверены, что хотите именно этого, то:
Клиентская часть (C#):
Код:
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]
[COLOR="#000000"][COLOR="#007700"]
|
|
|

21.09.2015, 18:05
|
|
Новичок
Регистрация: 13.07.2015
Сообщений: 17
С нами:
5703446
Репутация:
0
|
|
Дальше, как я понимаю, нужно создать отдельную html страничку, на которой js будет тягать из этой папки файлы и выводить. Верный ход мыслей, или можно сделать проще?
|
|
|

21.09.2015, 19:20
|
|
Познающий
Регистрация: 23.08.2005
Сообщений: 48
С нами:
10902311
Репутация:
1
|
|
Сообщение от Lavrin
↑
Дальше, как я понимаю, нужно создать отдельную html страничку, на которой js будет тягать из этой папки файлы и выводить. Верный ход мыслей, или можно сделать проще?
Можно пойти несколькими путями, самый простой (но не самый оптимальный, с точки зрения нагрузки) - при обращении к файлу screens.php в той же папке, где и server.php - он производит сканирование директории картинок и выдает в формате:
Соответственно, можно либо отдельно использовать (обращаться непосредственно к нему, чтобы все картинки посмотреть), либо вставить полученный результат в нужную Вам страницу.
Код screens.php:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]PHP_EOL[/COLOR][COLOR="#007700"];[/COLOR][/COLOR]
В дальнейшем можно будет легко дописать фильтр, который будет только по определенным датам выводить и т.д.
|
|
|

21.09.2015, 20:59
|
|
Новичок
Регистрация: 13.07.2015
Сообщений: 17
С нами:
5703446
Репутация:
0
|
|
Да, это отлично, но я столкнулся с ещё одной проблемой. Я называл файл просто img.jpg и перед записью просто удаляю предыдущий. Меня это абсолютно утраивает, так как я хочу видеть экран в реальном времени (с интервалом в секунду). Но беда в том, что браузер запоминает имя файла, кешурует, и выводит постоянно первых, хотя после этого я пересохранил файл уже кучу раз. Как это бороть?
|
|
|

22.09.2015, 14:41
|
|
Новичок
Регистрация: 19.08.2015
Сообщений: 9
С нами:
5650166
Репутация:
0
|
|
Запрет на кеширование:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]header[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"Cache-Control: no-store, no-cache, must-revalidate"[/COLOR][COLOR="#007700"]); [/COLOR][COLOR="#0000BB"]header[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"Expires: "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]date[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"r"[/COLOR][COLOR="#007700"]));[/COLOR][/COLOR]
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|