Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/50: Рейтинг темы: голосов - 50, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
.NET 4.x

Отправка файла через C# и php обработка

19.02.2014, 12:52. Показов 9688. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. Занимаюсь сейчас созданием некого подобия галереи. Смысл в чем. Есть N-клиентов и каждые M-минут с их компьютеров отправляется файл-картинка, которую они сами генерируют. Сервер должен принять картинку и обработать(Положить в папку на сервере и сделать запись в БД). После этого администратор сайта делает запрос через браузер и ему выводятся картинки с информацией.

Остановился на банальном. Если я делаю веб-форму и оттуда отправляю файл, то все отлично и файл заливается в папку сервера. Если я делаю отправку автоматическую через C# - то реакции никакой.

Ниже структура галереи и код приложения на c# и php-обработчика. Сразу говорю, там ещё не реализована запись в БД и в файле php.ini на виртуальном хостинге прописано все правильно.

Структура
[Ресурс в черном списке]

Кусочек кода приложения клиента
C#
1
2
3
4
5
 String dataname = DateTime.Now.ToString("yyyy.MM.dd_HH-mm-ss");
              img.Save(@"E:\Diplom\data\" + dataname + ".jpg"); //адрес сохранения
              string Filename = dataname + ".jpg";
              WebClient USCWebClient = new WebClient();
              USCWebClient.UploadFile("http://usc.ru/handler/upload.php", @"E:\Diplom\data\" + Filename);
Обработчик upload.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?PHP
// Каталог, в который мы будем принимать файл:
$uploaddir = '/home/usc.ru/www/gallery/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
?>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2014, 12:52
Ответы с готовыми решениями:

Отправка файла на сервер через POST запрос
Нужно отправить .txt файл на сервер, как это можно реализовать?

Повторная отправка файла через Socket дает битые данные
Доброе/ый утро/день/вечер! Вопрос по Socket'ам Отправляю файл - Читаю/отправляю порциями. Файл клиент принимает, файл запускается(в...

Отправка файла на почту через PHP
прошу вашей помощи нудно добавить в карточку товара форму - в которую вводишь имеил и туда прилетает файл большое спс тому кто...

13
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
19.02.2014, 13:04  [ТС]
Ссылочка не вставляется на прямую. Вот структура галереи.
Миниатюры
Отправка файла через C# и php обработка  
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.02.2014, 13:12
Посмотрите чарльзом или чем-нибудь похожим на запрос, который отправляется с формы и который отправляется с вашего клиента.
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
19.02.2014, 13:12
Вроде, такое надо через POST-запрос делать.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.02.2014, 13:41
2Sides, берете сниффер, смотрите, какой запрос отправляется при заливке файла, эмулируете в шарпе с помощью Http-, WebRequest.
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
19.02.2014, 14:07  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
Посмотрите чарльзом или чем-нибудь похожим на запрос, который отправляется с формы и который отправляется с вашего клиента.
Вот что получилось.

Цитата Сообщение от dondublon
Вроде, такое надо через POST-запрос делать.
Так я и делаю через POST

Psilon, а через WebClient это сделать не получиться?
Миниатюры
Отправка файла через C# и php обработка  
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.02.2014, 14:08
2Sides, я веб-клиент не очень люблю, слишком толстый класс для такой простой задачи, поэтому не могу ничего про него сказать, ни хорошего, ни плохого. Я как-то бота писал для браузерки, в итоге все переписал на пост, потому что с веб-клиентом морока одна.

Если запрос правильный, то должно работать. По закону логики a -> b == !b -> !a следует, что если не работает, то запрос не правильный
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.02.2014, 14:09
Лучший ответ Сообщение было отмечено 2Sides как решение

Решение

ну статистика, насколько я понимаю, не очень интересна. смотрите что в Request, делайте так же
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
19.02.2014, 14:13  [ТС]
xoraxax, в Request меня смущает Content-type - application/octet-stream. Может быть из-за него? А так там картинка моя
Psilon, ды вот проще действительно было бы написать так, но тут уже любопытство берет
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.02.2014, 14:15
Просто сделайте, чтоб ваш запрос выглядел так же как запрос из формы.

Добавлено через 22 секунды
может быть из-за чего угодно
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
22.02.2014, 03:05  [ТС]
xoraxax, проверил. Запрос выглядит один в один. Введя ещё в обработчик исключения понял, то файл загружается на сервер во временную папку php с названием tmp, а в папку не перекидывает, хотя опять же повторюсь, что с формы работает все отлично!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.02.2014, 03:07
Не может сервер по разному реагировать на одинаковые запросы
0
63 / 62 / 11
Регистрация: 28.12.2011
Сообщений: 280
22.02.2014, 08:18
ищите отличия в запросе, копируйте все до мельчайших подробностей, тоже такое было не раз и каждый раз выяснялось что либо заголовок либо еще что-то не совпадает.
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 8
22.02.2014, 11:52  [ТС]
Проблему решил. Всем спасибо за помощь!
Нужно действительно посмотреть Request, программа Charles помогла.
В Request веб-формы имя всего контейнера отправки было userfile, соответственно и в upload.php тоже userfile.
В Request C# было просто file
Я поменял в upload.php userfile -> file и все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2014, 11:52
Помогаю со студенческими работами здесь

Отправка файла в форме через PHP
Всем доброго времени суток. Есть следующая проблема: есть форма-анкета, одним из полей которой является поле отправки файлов. В php файле...

Unity3D - C# + PHP - на срабатывает отправка файла через WWWForm
Доброго времени суток. Делаю в Unity скрипт по отправке скриншота на веб-сервер. Со стороны Unity такой скрипт: using...

Php mail, обработка и отправка переменных в этой функции
Добрый день! Написал форму, читая документацию. но не нашёл, как реализовать включение введённых пользователем данных в письмо. ...

Excel - передача файла по FTP или отправка файла сценарию на php.
1) Необходимо из страницы экселя сформировать текстовый файл и перезаписать его на FTP-сервере. Или создать этой файл локально и...

Отправка СМС через PHP
Привет всем! Есть готовое решение отправки СМС через PHP http://mainsms.ru/home/integration_php. Есть форма на сайте: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru