【问题标题】:How to update file in datasnap rest server with http?如何使用http更新datasnap rest服务器中的文件?
【发布时间】:2012-05-21 13:03:21
【问题描述】:

我的问题如题。我有一个datasnap rest服务器,我想用java或java脚本上传文件。怎么办? (最好有示例代码) 非常感谢!

【问题讨论】:

  • 您发送一个 PUT 请求,就像您发送文件到任何其他类型的 HTTP 服务器一样。不过,我怀疑这并不是您真正要问的。您愿意在您的问题中提供更多细节吗?您在任务的哪一部分遇到问题?
  • 谢谢。我有datasnap服务器和datasnap客户端,服务器和客户端之间的上传文件功能还可以。但现在另一个客户端(java 或 js)将调用此函数将文件发送到服务器。我只想使用带有 http 的旧数据快照服务器(如 server/method/function/param1...,一个参数是文件内容)。

标签: delphi rest upload datasnap


【解决方案1】:

我曾经尝试将流传递给 REST 调用,但最终 诉诸于通过直接 WebBroker 请求上传到页面... 这更容易管理。这也不是小事,因为当您使用表单让用户选择要上传的文件时,您必须管理收到的多部分请求数据。

这是我在 WebModuleBeforeDispatch 中使用的一些代码:

类型 TMyIdHTTPAppRequest = 类 (TIdHTTPAppRequest);

    haReq := TMyIdHTTPAppRequest(Request);
    fname := IntToStr (haReq.ContentLength);
    multi := TMultipartRequestFiles.Create(haReq.FRequestInfo,
      haReq.content);

    if (multi.Count > 0) and Assigned (multi.Items[0]) then
    begin
     theFile := TFileStream.Create(ServerConf['fileupload:tempdir'] + folder + '\' +
        multi.Items[0].FileName, fmCreate);
      multi.Items[0].Stream.Position := 0;
      TheFile.CopyFrom(multi.Items[0].Stream, multi.Items[0].Stream.Size);
      theFile.Free;

但是,它基于我拥有的自定义 TMultipartRequestFiles,试图将其清理并加载为我对 Delphi datasnap 的 Relax 开源扩展的一部分。

还有其他管理文件上传的解决方案吗?我想应该有一些东西可以在 Indy 中使用,我多年前写了那个类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多