Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FTP 
:(
    Опции темы
Tokagero
Дата 7.1.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Итак, подскажите. Я отправляю файл (скриншот) на сервер таким путем:
Код

//screenshot
  bm := TBitMap.Create;
  bm.Width := Screen.Width;
  bm.Height := Screen.Height;
  BitBlt(bm.Canvas.Handle, 0, 0,
     bm.Width, bm.Height,
     GetDC(0), 0, 0, SRCCOPY);
  JpegIm := TJpegImage.Create;
  JpegIm.Assign(bm);
  JpegIm.CompressionQuality := 100;
  JpegIm.Compress;
  JpegIm.SaveToFile('C:\Screen.jpg');
  bm.Destroy;
  JpegIm.Destroy;

//send
  ftp:=TIdFTP.Create(Application);
  ms:=TMemoryStream.Create;
  try
    try
      ftp.Host:='***.***.***.***';
      ftp.Port:=21;
      ftp.Username:='******';
      ftp.Password:='******';
      ftp.Connect(true, 2000);
      AssErt(ftp.Connected);
      ftp.ChangeDir('FOTO/SScreen/');
      Memo1.Lines.SaveToStream(ms);
      ms.Position:=0;
      ftp.Put(ms,'Screen.jpg',false);
      ShowMessage('OK');
    finally
      ms.Free; ftp.Free;
    end;
  except
    ShowMessage('ERROR :(');
  end;


Но отвылается текстовый файл. Что нужно изменить??
PM MAIL   Вверх
bartram
Дата 7.1.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 1
Всего: 29



Цитата(Tokagero @  7.1.2007,  13:36 Найти цитируемый пост)
Код

Memo1.Lines.SaveToStream(ms);

Вот это ты зачем делаешь?
Цитата(Tokagero @  7.1.2007,  13:36 Найти цитируемый пост)
Код

ftp.Put(ms,'Screen.jpg',false);

Уловил в чем ошибка? smile 


Это сообщение отредактировал(а) bartram - 7.1.2007, 14:31


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Tokagero
Дата 7.1.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Я понял что оно делает текстовый файл, содержимое которого в ms. Можно как-то сделать чтоб оно не текстовый файл ложил а картинку.....??   smile 

Это сообщение отредактировал(а) Tokagero - 7.1.2007, 16:07
PM MAIL   Вверх
bartram
Дата 7.1.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 1
Всего: 29



Tokagero, вот пример


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Romikgy
Дата 7.1.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Tokagero, мож добавишь , что типа 
ms.LoadFromFile('C:\Screen.jpg');
 smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Tokagero
Дата 8.1.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Итак, люди... Подскажите. Вот что у меня вышло:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var DateTime : TDateTime;
    str : string;
    ftp: TIdFTP;
    ms:  TMemoryStream;
    JpegIm: TJpegImage;
    bm: TBitMap;
begin
// тут я проверяю, если последние 3 цифры - нули, то заливать на фтп (скрин раз в 10 минут)
DateTime := Time; str := TimeToStr(DateTime);
str:=str[1]+str[2]+str[4]+str[5]+str[7]+str[8];
// и если они - нули то
if (str[4]='0')and(str[5]='0')and(str[6]='0') then
  begin
    //screenshot
  bm := TBitMap.Create;
  bm.Width := Screen.Width;
  bm.Height := Screen.Height;
  BitBlt(bm.Canvas.Handle, 0, 0,
     bm.Width, bm.Height,
     GetDC(0), 0, 0, SRCCOPY);
  JpegIm := TJpegImage.Create;
  JpegIm.Assign(bm);
  JpegIm.CompressionQuality := 100;
  JpegIm.Compress;
  JpegIm.SaveToFile('C:\Screen.jpg');
  bm.Destroy;
  JpegIm.Destroy;

//send
  ftp:=TIdFTP.Create(Application);
  ms:=TMemoryStream.Create;
  try
    try
      ftp.Host:='***.***.***.***';
      ftp.Port:=21;
      ftp.Username:='******';
      ftp.Password:='******';
      ftp.Connect(true, 2000);
      AssErt(ftp.Connected);
      ftp.ChangeDir('FOTO/SScreen/');
      ms.LoadFromFile('C:\Screen.jpg');
      ms.Position:=0;
      ftp.Put(ms,readcomputername+inttostr(random(1000))+'.jpg',false);
    finally
      ms.Free; ftp.Free;
    end;
  except
  end;
  end;
end;


НО вылетает ошибка в районе
Код

  ftp.Put(ms,readcomputername+inttostr(random(1000))+'.jpg',false);

примерно такого содержания:
"Project Project1.exe raised exeption class EIdProtocolReplyError with message 'Permission denied'. Process stoped....."

А чуть не забыл. Чтоб небыло вопросов, что такое readcomputername то это просто функция чтоб узнать имя компа. Вот она:

Код

Function ReadComputerName:string;
var
i:DWORD;
p:PChar;
begin
i:=255;
GetMem(p, i);
GetComputerName(p, i);
Result:=String(p);
FreeMem(p);
end;


Добавлено @ 13:06 
А все спасибо. Разобрался. Проблема была такова:
Так как у меня было 
Код

ftp.Put(ms,readcomputername+inttostr(random(1000))+'.jpg',false);

то число генерировалось одинаковое. Надо было поставить Randomize;

Это сообщение отредактировал(а) Tokagero - 8.1.2007, 13:03
PM MAIL   Вверх
Romikgy
Дата 8.1.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Tokagero @  8.1.2007,  12:01 Найти цитируемый пост)
EIdProtocolReplyErro


Цитата(Tokagero @  8.1.2007,  12:01 Найти цитируемый пост)
Permission denied'

А на фтп сервере , ты этому юзеру разрешил что либо писать на фтпишник?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.