Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
22 / 22 / 5
Регистрация: 05.06.2015
Сообщений: 188
1

Запись файла на сервер. Протокол HTTP

20.05.2016, 10:17. Показов 2783. Ответов 8
Метки нет (Все метки)

Доброе утро форумчане! Столкнулся с интересной для себя задачей: Записать файл на сервер (не localhost), к примеру изображение формата png в определенный каталог сервера. Нашел несколько советов, о том, что нужно двигаться в направлении HTTP.Put, но чтение справки мне не дало пользы.
Собственно вопрос: Как бы вы записали файл на сервер, и при помощи какого метода? (если есть возможность - подкиньте код, пожалуйста).

Добавлено через 46 минут
Нашел вот такой код, но не совсем понимаю, что за f.AddFile('file', 'C:\test.rar', 'application/octet-stream');, точнее какие параметры передавать.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
f   : TIdMultiPartFormDataStream;
begin
  IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5';
  f   := TIdMultiPartFormDataStream.Create;
  try
    f.AddFile('file', 'C:\test.rar', 'application/octet-stream');
    try
     IdHTTP1.Post('http://zalil.ru/upload/', f);
    except on E : Exception do
     if IdHTTP1.Response.ResponseCode = 302 then
     Edit1.Text := 'http://zalil.ru/' + StringReplace(IdHTTP1.Response.Location,'/upload/','',[])
     else
     Edit1.Text := E.Message;
    end;
  finally
   f.Free;
  end;
end;
Добавлено через 16 минут
И еще вопрос возник,а нужно ли принимать на сервере получаемый файл каким-нибудь скриптом? PHP?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2016, 10:17
Ответы с готовыми решениями:

Http протокол: что подразумевается под словом "протокол"
Начал разбирать Http-протакол. Http- это протокол передачи гипертекста. 1 ) Не сильно понимаю что...

Загрузка файла на сервер по протоколу http
Товарищи программисты помогите пожалуйста с проблемой загрузки на файлообменник по протоколу http...

Загрузка файла на сервер через HTTP
Доброе время суток. Меня интересует загрузка файлов на сервер через компонент idHTTP. Не мог ли...

Отправка файла на сервер http post запросом
Здравствуйте. Задача следующая - нужно отправить HTTP POST запрос, содержащий несколько переменных...

8
5086 / 3966 / 1309
Регистрация: 14.04.2014
Сообщений: 18,249
Записей в блоге: 18
20.05.2016, 10:44 2
нужно
недавно абсолитно идентичная тема была
0
22 / 22 / 5
Регистрация: 05.06.2015
Сообщений: 188
20.05.2016, 10:56  [ТС] 3
krapotkin, листал последние 5 страниц, перед тем как создать тему - не нашел. Было бы здорово, если бы кто-то "направил в нужное русло". И каким должен быть php файл, есть где-нибудь исходники?

Добавлено через 4 минуты
Я полагаю, что в этой строке должно быть обращение к созданному php файлу?
Delphi
1
IdHTTP1.Post('http://zalil.ru/upload/', f);
вроде того?
Delphi
1
IdHTTP1.Post('http://zalil.ru/upload/download.php', f);
0
5086 / 3966 / 1309
Регистрация: 14.04.2014
Сообщений: 18,249
Записей в блоге: 18
20.05.2016, 11:30 4
Лучший ответ Сообщение было отмечено dezforse как решение

Решение

типа да
а примеры в php мануалах ессно
http://php.net/manual/ru/featu... method.php
1
22 / 22 / 5
Регистрация: 05.06.2015
Сообщений: 188
20.05.2016, 11:55  [ТС] 5
krapotkin, вроде файл передался, и в array у меня записались параметры (имя на машине откуда загрузилось, размер, и куда поместило), а вот как сохранить в нужный мне каталог это изображение? Использовал код из примера.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES
// вместо $_FILES.
 
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Файл корректен и был успешно загружен.\n";
} else {
    echo "Возможная атака с помощью файловой загрузки!\n";
}
 
echo 'Некоторая отладочная информация:';
print_r($_FILES);
 
print "</pre>";
 
?>
Добавлено через 1 минуту
Кстати, еще мне выдает строку: Возможная атака с помощью файловой загрузки!
Но данные файла есть. Чет подозрительно.
0
5086 / 3966 / 1309
Регистрация: 14.04.2014
Сообщений: 18,249
Записей в блоге: 18
20.05.2016, 12:26 6
move_uploaded_file == false
атака - не знаю, а файл переместить из указанного места в другое она не смогла
0
22 / 22 / 5
Регистрация: 05.06.2015
Сообщений: 188
20.05.2016, 12:31  [ТС] 7
krapotkin, Я вот думаю, может в этой штуке дело, другой формат какой-нибудь нужно передавать или еще чего?

Delphi
1
f.AddFile('file', 'C:\test.rar', 'application/octet-stream');
0
5086 / 3966 / 1309
Регистрация: 14.04.2014
Сообщений: 18,249
Записей в блоге: 18
20.05.2016, 12:45 8
что ж с гуглом-то сегодня, недоступен совсем?
Отправить файл Post запросом
0
22 / 22 / 5
Регистрация: 05.06.2015
Сообщений: 188
20.05.2016, 13:50  [ТС] 9
krapotkin, все оказалось куда проще, я неправильно указывал имя файла.
В этой самой строке, первым параметром принимается будущее имя объекта массива:
Delphi
1
f.AddFile('file', 'C:\test.rar', 'application/octet-stream');
В любом случае спасибо за активность и подсказки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2016, 13:50

Закачка файла на www сервер по http/https
Уважаемые гуру, может быть кто-то знает как из VB сделать закачку файла на www сервер по...

Http протокол
У меня http клиент находится на смартфоне. С этим смартфоном перемещвется пользователь и...

Проверка на протокол http и https
Здесь идет выборка из базы данных где если в базе данных попадается путь который начинается с http,...

Как обрабатывать HTTP протокол?
Мне нужно прочитать с удаленного сервера HTML страницу, провести ее анализ и выкачать все рисунки,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru