groovy Jenkins:使用Jenkins请求插件通过HTTP POST将文件发送到服务器

2vuwiymt  于 2023-10-15  发布在  Jenkins
关注(0)|答案(2)|浏览(274)

我正在尝试通过Pipeline从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>" + '--'

有没有其他方法可以将文件上传到服务器?或者你有一个使用插件的解决方案吗?

wpx232ag

wpx232ag1#

httpRequest插件可以上传文件。我以前用过。
uploadFile设置为上传文件的路径,如有必要,将contentType设置为您选择的内容类型。

ve7v8dk2

ve7v8dk22#

我只想为自己用这个...
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/

相关问题