ファイルを転送するTStreamオブジェクトを返すDataSnapサーバーメソッドを作成しました。クライアントアプリケーションはメソッドを呼び出し、ストリームを読み込んでファイルをダウンロードします。サーバーの方法は非常に簡単です:Delphi XE2 DataSnap - サーバーからクライアントへのTStream経由のJPEGファイルのストリーミング
function TServerMethods.DownloadFile(sFilePath: string): TStream;
var
strFileStream: TFileStream;
begin
strFileStream := TFileStream.Create(sFilePath, fmOpenRead);
Result := strFileStream;
end;
JPGファイルをダウンロードするときにそれは(PDF、GIF、BMP、ZIP、EXE)多くの種類のファイルをダウンロードして正常に動作しますが、それは動作しません。クライアント側では、メソッド呼び出しから返されるストリームオブジェクトは、JPGの場合は常にサイズが0です。 JPGファイルを自分のPC上でローカルに正常にストリーミングすることができるので、DataSnapと何か関係があります。私は、DataSnapがストリームをJSONの背後に変換することを示唆するいくつかの調査を行いました。これはJPGファイルに関しては問題があるかもしれません - 誰でもこれを確認できますか?クライアント側では、TDSRESTConnectionを使用してサーバーメソッドを呼び出しています。私はストリーミングする前にJPGファイルをZIPできることを知っていますが、これを行う必要はありません。