Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.05.2018, 14:15
Tech N9ne Tech N9ne вне форума
Прохожий
 
Регистрация: 18.05.2018
Сообщения: 31
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Загрузка картинки на хостинг

здравствуйте, хочу программно загрузить картинку на конкретный хостинг.
хостинг ipic.su
знаю что нужно использовать Idhttp, tmultipartformdata
знаю что нужно смотреть через программы типа http analizer
вот скрин post data


Но никак не пойму, как именно оформить всё это дело.
объясните пожалуйста, что делать, на примере этого хостинга.
хочу понять, что бы потом иметь возможность самостоятельно менять хостинги.
ни разу с подомным не сталкивался, да и новичок в целом еще _) помогите пожалуйста
и если можно не пишите для меня исходник) на словах объясните, что бы я сам поеб... помучался) дабы закрепить это дело в своей голове)

Последний раз редактировалось Tech N9ne, 18.05.2018 в 15:09.
Ответить с цитированием
  #2  
Старый 21.05.2018, 10:52
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

У каждого хранилища свои правила заливки, чтоб особо не "поеб... помучался)" проще использовать компонент TWebBrowser с последующей обработкой соответствующих полей загрузчика хостинга, кстати, конкретно правила ipic.su, если не ошибаюсь, запрещают автоматизацию процесса апплоуда и в воизбежание конфликтов с администрацией сервиса вариант с "подставой" выглядит предпочтительнее
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Tech N9ne (21.05.2018)
  #3  
Старый 21.05.2018, 11:07
Tech N9ne Tech N9ne вне форума
Прохожий
 
Регистрация: 18.05.2018
Сообщения: 31
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
У каждого хранилища свои правила заливки, чтоб особо не "поеб... помучался)" проще использовать компонент TWebBrowser с последующей обработкой соответствующих полей загрузчика хостинга, кстати, конкретно правила ipic.su, если не ошибаюсь, запрещают автоматизацию процесса апплоуда и в воизбежание конфликтов с администрацией сервиса вариант с "подставой" выглядит предпочтительнее
спасибо попробую
Ответить с цитированием
  #4  
Старый 21.05.2018, 11:23
Tech N9ne Tech N9ne вне форума
Прохожий
 
Регистрация: 18.05.2018
Сообщения: 31
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
У каждого хранилища свои правила заливки, чтоб особо не "поеб... помучался)" проще использовать компонент TWebBrowser с последующей обработкой соответствующих полей загрузчика хостинга, кстати, конкретно правила ipic.su, если не ошибаюсь, запрещают автоматизацию процесса апплоуда и в воизбежание конфликтов с администрацией сервиса вариант с "подставой" выглядит предпочтительнее
Извиняюсь..
А как выбрать изображение?
На сайте кнопочка "обзор", где и нужно выбрать файл. Как программно вставить путь, не понимаю.
Нашёл такой ответ на форуме, но человек говорит что не всё так просто.
http://www.delphisources.ru/forum/sh...ad.php?t=24513

И всё же если я хочу загрузить изображение без webbrowser, подскажите, как пользоваться tmultipartformdata ?
Мне не понятны некоторые нюансы
Код:
 data := TIdMultiPartFormDataStream.Create;

Код:
data.AddFile( 'Filename' , Edit1.Text {это путь к файлу}  , '1' {это что??} );
если взять во внимание скриншот с первого поста, там в строке несколько параметров, а
Код:
data.AddFormField 
принимает только 2 параметра.
На скрине к примеру вторая строчка - action , loadimg , 7
Мне не понятно, как именно работать с TIdMultiPartFormDataStream.

Если бы вы прояснили ситуацию, был бы очень благодарен!
Мне в принципе не важно, что там хостинги запрещают автоматизацию апплоуда. Мне бы понять принцип работы. В случае чего, смогу спокойно переписать код под другой хостинг.

Последний раз редактировалось Tech N9ne, 21.05.2018 в 12:44.
Ответить с цитированием
  #5  
Старый 21.05.2018, 18:07
Tech N9ne Tech N9ne вне форума
Прохожий
 
Регистрация: 18.05.2018
Сообщения: 31
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
uses IdMultipartFormData;
{ .... }
procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
Ssilka: String;
begin
data := TIdMultiPartFormDataStream.Create;
try
{ передаём папаметры скрипту }
       data.AddFile('Filename', sEdit1.Text, '');  // в эдите путь к картинке, формата jpg
              data.AddFormField('link', '/');
              data.AddFormField('action', 'loadimg');
              data.AddFormField('client'  ,'ipic.su');
              data.AddFormField('image'  ,'Content-Type: image/jpeg');

{ Вызываем Post метод компонента TIdHTTP и считываем результат в TMemo }
              Ssilka := IdHTTP1.Post('http://ipic.su/', data);
              sMemo1.Lines.Clear;
              sMemo1.Lines.Add(Ssilka);
finally
data.Free;
end;
end;

Что делаю не так????
В мемо получаю - Only jpg|gif|png imagetypes support.


Последний раз редактировалось Tech N9ne, 21.05.2018 в 18:11.
Ответить с цитированием
  #6  
Старый 21.05.2018, 18:47
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Посмотрите, что передается в хидере, там как минимум User-agent еще.
Ответить с цитированием
  #7  
Старый 21.05.2018, 19:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Там не только тип браузера передавать нужно, там и качество сжатия и размер превью требуется, много чего, можно сниффером перехватить пакет и подсмотреть, но подозреваю что для каждой загрузки его состав отличается не только именем и содержимым, но и структурой, во всяком случае даже их "фирменный" iPicShell апплоудит через браузер, видимо такой движок у сайта "дружелюбный", плата за удобство что без капчи принимает картинки
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Tech N9ne (22.05.2018)
  #8  
Старый 22.05.2018, 00:46
Tech N9ne Tech N9ne вне форума
Прохожий
 
Регистрация: 18.05.2018
Сообщения: 31
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Там не только тип браузера передавать нужно, там и качество сжатия и размер превью требуется, много чего, можно сниффером перехватить пакет и подсмотреть, но подозреваю что для каждой загрузки его состав отличается не только именем и содержимым, но и структурой, во всяком случае даже их "фирменный" iPicShell апплоудит через браузер, видимо такой движок у сайта "дружелюбный", плата за удобство что без капчи принимает картинки
Удалось сделать на другой хостинг)
Код:
        
var  Ssilka , HostingURL , Save_Path :string;

{.....}

 data := TIdMultiPartFormDataStream.Create;
           HostingURL:='http://uploads.ru/';
            try
              data.AddFile('Filename', Save_Path, '5');
              data.AddFormField('doShort', 'false');
              data.AddFormField('sID', 'fjgt40vrohem9n9npoqkfkiae2');
              data.AddFormField('ImageUp'  ,'Content-Type: application/octet-stream');
              data.AddFormField('Upload', 'Submit Query');
              Ssilka := IdHTTP1.Post('http://uploads.ru/upload.php', data);
              sMemo1.Lines.Clear;
              sMemo1.Lines.Add(Ssilka);  // получаю конец ссылки, типа Zf4RL.jpg
              Delete(Ssilka,1,13) ;
              Delete(Ssilka,10,2) ;
                sMemo1.Lines.Add(HostingURL+ssilka) ; // склеиваю uploads.ru/ + Zf4RL.jpg
                wb1.Navigate(HostingURL+ssilka);
              finally
              data.Free;
              end;
Но на этом хостинге не дают прямую ссылку)) конечная ссылка s8.uploads.ru/Zf4RL.jpg
то что красным, меняется при каждой загрузке.. s8,s0,s4 и тд
пришлось через twebbrowser заходить по ссылке, и парсить прямую ссылку к изображению в html.
может кому пригодится из новичков)
Спасибо за помощь!

Последний раз редактировалось Tech N9ne, 22.05.2018 в 01:19.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter