Как отправить большие файлы с сервера RadPHP на сервер Delphi XE datasnap - PullRequest
2 голосов
/ 27 февраля 2012

Каков наилучший способ отправки большого (<50 МБ) файла с сервера PHP (написанного на RADPHP) на сервер Delphi Datasnap (Delphi XE). Из-за проблем с подключением я бы предпочел использовать HTTP (S), но для меня это новая территория. </p>

Сервер PHP принимает загрузку файла из браузера пользователя и может кодировать его (base_64). Но а) это помещает его в строку, которая не может быть лучшим способом справиться с этим b) сервер DataSnap аварийно завершает работу с «Превышена максимальная длина строки» при получении строки

Сервер Datasnap имеет 4 компонента - TDSServer, TDSServerClass, TDSHTTPService и TDSAuthenticationManager. Сервер RADPHP использует компонент DSRestConnection.

1 Ответ

1 голос
/ 27 февраля 2012

Я не очень знаком с Datasnap, но вы не могли бы сделать что-то вроде:

  • Клиент загружает файл на сервер RadPHP
  • , теперь вы хотите отправить это наСервер Datasnap, что вы можете сделать, это отправить команду со ссылкой, чтобы скачать что-то вроде:

RadPHP: эй, новый файл для вас, вот ссылка: "http://www.mydomain.com/files/filename.extension"

Datasnap: отправляет ответ, т. Е. «ОК», и начинает загрузку, на стороне сервера вы можете использовать, например, TIdHTTP.

, и реализация может выглядеть примерно так:

procedure DatasnapServerClass.NewFile(const ALink: string);
var
  LIDHTTP: TIdHTTP;
begin
// create instance of TIdHTTP, and call the link to 
// download the file to your desired local folder
// using ALink as the URL
end;
...