2

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

4

1 回答 1

2

我曾经尝试将流传递给 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 中使用的东西,我多年前写了那个类。

于 2012-07-29T16:24:45.057 回答