writefile将文件写入工作区Groovy Jenkins步骤看起来会破坏大小&;二进制文件的内容

writefile将文件写入工作区Groovy Jenkins步骤看起来会破坏大小&;二进制文件的内容,groovy,file-upload,jenkins-pipeline,binaryfiles,jenkins-groovy,Groovy,File Upload,Jenkins Pipeline,Binaryfiles,Jenkins Groovy,在上传二进制文件的过程中,很少有人尝试,注意到作为Jnekins管道的一部分使用的writeFileGroovy正在破坏文件的内容及其大小,从二进制文件的角度来看更令人担忧 根据文档,提到它支持用于写入文件的二进制数据的base64编码,但看起来它是错误的,因为写入的文件大小错误(超过了…)&已损坏,因为无法打开上面链接的post中突出显示的zip或二进制文件 writeFile:将文件写入工作区将给定内容写入指定的 当前目录中的文件。 文件类型:字符串文本类型:字符串 编码(可选)文件的目标编

在上传二进制文件的过程中,很少有人尝试,注意到作为Jnekins管道的一部分使用的
writeFile
Groovy正在破坏文件的内容及其大小,从二进制文件的角度来看更令人担忧

根据文档,提到它支持用于写入文件的二进制数据的
base64
编码,但看起来它是错误的,因为写入的文件大小错误(超过了…)&已损坏,因为无法打开上面链接的post中突出显示的zip或二进制文件

writeFile:将文件写入工作区将给定内容写入指定的 当前目录中的文件。 文件类型:字符串文本类型:字符串 编码(可选)文件的目标编码。如果留空, 将使用平台默认编码。如果文本是 Base64编码字符串,解码后的二进制数据可以写入 通过指定“Base64”作为编码来创建文件。类型:字符串

是否存在任何解决方法,或者是否有方法提出错误修复请求

下面是groovy Jenkins管道脚本中引起问题的代码行

 // Read contents and write to workspace
    writeFile(file: filename, encoding: 'Base64', text: filedata.read().getBytes().encodeBase64().toString())

您似乎在执行base64编码两次。根据文档,它正在指定;编码;键入'Base64'并将其作为调用encodeBase64()读取的一部分实际执行。我遗漏了什么吗?不要使用
writeFile
而使用类似于:
newhudson.FilePath(新文件(“$workspace/$filename”)).copyFrom(filedata)
。这应该在工作区中复制上传的文件…实际上,代码的摘录来自此:&因为它不在
stage
中,恐怕我们可以使用环境变量,如$workspace