Topic: Сохранение файла на Web Disk
Добрый день, есть необходимость сохранять некоторые файлы хранящиеся в базе MySQL на расшаренный Web Disk. Как это можно реализовать в MVD? Буду признателен за любой совет, особенно за совет с примером кода)
My Visual Database → Russian → Сохранение файла на Web Disk
Добрый день, есть необходимость сохранять некоторые файлы хранящиеся в базе MySQL на расшаренный Web Disk. Как это можно реализовать в MVD? Буду признателен за любой совет, особенно за совет с примером кода)
Поинтересовался, как реализована функция обмена файлами через FTP в Delphi. Для этого используется библиотека TIdFTP. Вопрос к разработчикам, а в MVD есть возможность пользоваться данной библиотекой?
Поинтересовался, как реализована функция обмена файлами через FTP в Delphi. Для этого используется библиотека TIdFTP. Вопрос к разработчикам, а в MVD есть возможность пользоваться данной библиотекой?
Спасибо за наводку, что-то я протупил)
Еще раз спасибо sibprogsistem за подсказку, все получилось.
Рабочий код работы с FTP:
procedure frmForma_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
ftp: TIdFTP;
begin
ftp:=TIdFTP.Create(Application);
try
try
ftp.Host:='ftp.server.my'; // Fдрес FTP-сервера
ftp.Port:=21;
ftp.Username:='test@server.my';//Логин
ftp.Password:='123456789';//Пароль
ftp.Connect;
ftp.Passive := true; // Важный параметр, как оказалось, на больнистве FTP-серверов по умолчанию стоит активный режим, и передача файлов не проходит
ftp.ChangeDir('/image/'); //Каталог на сервере с которым работаем
ftp.Put('D:\tmp\img.jpg','img.jpg'); //Отправка файла
//ftp.Get('img.jpg,'D:\tmp\img.jpg, false); // Прием файла
ShowMessage('Передача файла успешно завершена!');
finally
ftp.free;
end;
except
ShowMessage('Ошибка передачи файла!');
end;
end;
Рано обрадовался( Передача файлов идет, текстовые нормально передаются, а с картинками беда, приходят коцаными. В чем может быть проблема, не пойму.
Рано обрадовался( Передача файлов идет, текстовые нормально передаются, а с картинками беда, приходят коцаными. В чем может быть проблема, не пойму.
Добрый день!
Помнится, давно ещё при работе с FTP с командной строкой был параметр TYPE, который может быть или ASCII, или BINARY. Видимо, по умолчанию передаётся в ASCII.
Добрый день!
Помнится, давно ещё при работе с FTP с командной строкой был параметр TYPE, который может быть или ASCII, или BINARY. Видимо, по умолчанию передаётся в ASCII.
Совершенно верно, дело в типе передаваемых данных. Я поднял информацию по библиотеке Indy10, после установления соединения с сервером нужно указать тип передаваемых данных, выглядит это вот так:
ftp.TransferType := ftBinary;
Но MVD почему-то не принимает эту строку, пишет "Undeclared identifier: 'ftBinary'". Честно говоря, разбираться некогда, пока отложил этот вопрос, но обязательно к нему вернусь.
Наконец-то дошли руки довести до ума скрипт передачи данных по протоколу FTP. Как я уже писал, проблема передачи графических данных в установленном типе протокола передачи данных. Библиотека Indy по умолчанию устанавливает ASCII, но для передачи графики этот тип данных не подходит, нужен BINARY. В описаниях функции TIdFTP установка типа протокола выглядит следующим образом:
ftp.TransferType := ftBinary;
Но MVD 'ftBinary' не понимает, и выдает ошибку 'Undeclared identifier'. Логическим путем пришел к выводу, что вся проблема в синтаксисе, моя догадка подтвердилась) Тип данных определяется числовым значением: 0 - ASCII, 1 - BINARY.
ftp.TransferType := 1 // BINARY;
Проверил на передаче файлов в форматах JPG и PNG, файлы передаются правильно, качество переданного изображения соответствует оригиналу.
Пример рабочего кода:
procedure frmForma_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
ftp: TIdFTP;
begin
ftp:=TIdFTP.Create(Application);
try
try
ftp.Host:='ftp.server.my'; // Fдрес FTP-сервера
ftp.Port:=21;
ftp.Username:='test@server.my';//Логин
ftp.Password:='123456789';//Пароль
ftp.Connect;
ftp.Passive := true; // Важный параметр, как оказалось, на больнистве FTP-серверов по умолчанию стоит активный режим, и передача файлов не проходит
ftp.TransferType := 1; //Устанавливаем тип передаваемых даных: 0 - ASCII, 1 - BINARY
ftp.ChangeDir('/image/'); //Каталог на сервере с которым работаем
ftp.Put('D:\tmp\img.jpg','img.jpg'); //Отправка файла
//ftp.Get('img.jpg,'D:\tmp\img.jpg, false); // Прием файла
ShowMessage('Передача файла успешно завершена!');
finally
ftp.free;
end;
except
ShowMessage('Ошибка передачи файла!');
end;
end;
На предмет приема файлов не тестировал, думаю, будет все нормально и с приемом.
My Visual Database → Russian → Сохранение файла на Web Disk
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi