【问题标题】:How to send large files from RadPHP server to Delphi XE datasnap server如何将大文件从 RadPHP 服务器发送到 Delphi XE datasnap 服务器
【发布时间】:2012-02-27 16:58:11
【问题描述】:

将大型 (

PHP 服务器接受用户浏览器上传的文件 OK 并可以对其进行编码(base_64)。 但 a)将其放入一个字符串中,这不是处理它的最佳方式 b) DataSnap 服务器在接收到字符串时因“超出最大行长”而崩溃

Datasnap 服务器有 4 个组件 - TDSServer、TDSServerClass、TDSHTTPService 和 TDSAuthenticationManager。 RADPHP 服务器使用一个 DSRestConnection 组件。

【问题讨论】:

  • 我怀疑你想使用 DataSnap 来处理 URL 并将真实文件写入磁盘,然后静态地提供那个巨大的文件,而不是通过 datasnap 中的字符串。

标签: delphi datasnap radphp


【解决方案1】:

我对 Datasnap 不是很熟悉,但你不能这样做:

  • 客户端上传文件到 RadPHP 服务器
  • 现在您想将其发送到 Datasnap 服务器,您可以发送一个带有下载链接的命令,如下所示:

RadPHP:嘿,给你的新文件,这是链接:“http://www.mydomain.com/files/filename.extension”

Datasnap:发送响应,即“OK”,然后开始下载,在服务器端可以使用 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;

【讨论】:

  • 谢谢,这是一种可能,但我试图一步实现它,并且没有为远程写访问打开目录(下载后 Datasnap 服务器希望删除)。
  • 就个人而言,我认为这是不可能的,但话说回来,我根本没有使用 datasnap,所以我不太熟悉什么是可能的,什么是不可能的,话虽如此,我确信这行得通。
  • 到目前为止,TDSHTTPService 一直是我关注的重点,看看是否可以找到在哪里设置最大字符串长度,因为小文件可以正常工作。帮助有点少!感谢您的快速回复。
  • 你要发送base64编码的数据,这会增加带宽使用,我希望你重新考虑在事件上使用直接二进制传输...
  • serverfunctionexecutor 单元对 POST 有“限制” - 向 Embarcadero 提交了一个初始修复,希望他们能更新这个单元以使其完全正常工作。文件大小也重新考虑 - 因为用户将从家庭/小型办公室上传,无论如何设置 10MB 限制。
猜你喜欢
  • 2015-12-27
  • 2023-03-12
  • 2012-11-05
  • 1970-01-01
  • 2017-08-18
  • 2023-03-03
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
相关资源
最近更新 更多