Jenkins:使用 Jenkins 请求插件通过 HTTP POST 将文件上传到服务器

问题描述 投票:0回答:2

我正在尝试通过管道将软件文件从 Jenkins 上传到服务器。服务器 API 需要以下信息:

Content-Type: multipart/form-data;
 
boundary= 'boundary'

body = 
--'boundary'
Content-Disposition: form-data; name=file; filename=origFilename

????
--'boundary'--

不幸的是,HTTP 请求插件不支持内容类型“multipart/form-data”(https://www.jenkins.io/doc/pipeline/steps/http_request/

我尝试忽略内容类型(因为我可以选择忽略它或给出错误的内容类型)并收到 415 错误代码。由于我正在尝试发送 .txt 文件并知道服务器接受文本文件(我通过 Postman 成功上传了一个文件),我认为这可能是由内容类型引起的。

当前代码:

httpRequest  httpMode: 'POST', url: "https:<host>.com/", requestBody: '--' + "<boundary>" + 'Content-Disposition: form-data; name="file";' + 'filename="JenkinsDemo.txt"' + '???' + "<boundary>" + '--'

还有其他方法可以将文件上传到服务器吗?或者您有使用该插件的解决方案吗?

http jenkins groovy jenkins-pipeline content-type
2个回答
0
投票

httpRequest
插件可以进行文件上传。我以前用过。

uploadFile
设置为要上传的文件的路径,如有必要,将
contentType
设置为您选择的内容类型。


0
投票

我只能自己用这个...

httpRequest
插件可以通过
multipart/form-data
上传文件。

  • 首先,您需要使用
    uploadFile
  • 指定要上传的文件
  • 然后,在要发送的表单数据中定义上传的属性名称
    multipartName
  • 最后,使用
    httpMode
  • 切换 HTTP 命令

最后您的设置可能如下所示:

def response = httpRequest url: 'yourhost.com', httpMode: 'POST', uploadFile: 'text.txt', multipartName: 'file'
echo "${response}"

如果需要,您可以使用

contentType

设置内容类型

参见:https://www.jenkins.io/doc/pipeline/steps/http_request/

© www.soinside.com 2019 - 2024. All rights reserved.