首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Indy中的MultiPartEntity [Delphi]

Indy中的MultiPartEntity [Delphi]
EN

Stack Overflow用户
提问于 2013-05-31 18:37:09
回答 1查看 372关注 0票数 0

我正在尝试将附件添加到一个服务。以下内容摘自文档:

我想知道是否可以在indy中添加实体,就像在Java中一样:

代码语言:javascript
复制
postRequest.setHeader("X-Atlassian-Token","nocheck");
MultipartEntity entity = new MultipartEntity();
entity.addPart("file", new FileBody(fileUpload));
postRequest.setEntity(entity);
HttpResponse response = httpClient.execute(postRequest);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 18:41:46

找到了:

代码语言:javascript
复制
uses IdMultipartFormData
...
Stream: TIdMultipartFormDataStream;

编辑:对于Jira REST API的这个特殊问题,解决方案如下:

针对URL的发布: BASE_URL+/rest/api/2/issue/{issueIdOrKey}/attachments

代码语言:javascript
复制
try
    lHTTP.Request.CustomHeaders.AddValue('X-Atlassian-Token', 'nocheck');
    FileSize := lHTTP.Response.ContentLength;

    FileStrm := TFileStream.Create(AFile, fmOpenRead or fmShareDenyWrite);
    try
      if FileSize < FileStrm.Size then
      begin
        FileStrm.Position := FileSize;

        Stream := TIdMultipartFormDataStream.Create;
        try
          Stream.AddFile('file', AFile);

          with lHTTP do
          begin
            with Request do
            begin
              ContentRangeStart := FileSize + 1;
              ContentRangeEnd := FileStrm.Size;
            end;

            Post(self.BASE_URL + SEND_ATTACHEMENT_TO_AN_ISSUE_URL +
              IntToStr(IssueID) + '/attachments', Stream);

            Result := true;

          end;
        finally
          Stream.Free;
        end;
      end;
    finally
      FileStrm.Free;
    end;
  except
    Result := false;
  end;

注意:在此之后,不要忘记改回头部,并将"Content Type“更改为将来请求所需的类型

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16855341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档