预处理器的 Jmeter Image Base64 post

Jmeter Image Base64 post by Preprocessor

我有一个以下的 csv

FirstName,MiddleName,LastName,ImageLocation
Jack|Michel|Rechards|D:\Image\picture.jpg

我正在使用 JSR223 预处理器来准备我的 json

import groovy.json.JsonBuilder
def json = new JsonBuilder()
json {
    myData {
        firstName vars.get("FirstName")
        MiddleName vars.get("MiddleName")
        LastName vars.get("LastName")
        //How to handle Image base 64 for post ?
    }
}
sampler.addNonEncodedArgument("",json.toPrettyString(),"")
sampler.setPostBodyRaw(true)

我的预期 json 如下所示

{
    "myData": {
        "firstName": "Jack",
        "MiddleName": "Michel",
        "LastName": "Rechards",
        "Image": Base64 Image Data
    }
}

如何从文件位置获取图像并将其转换为 base64 和 post? 使用 Beanshell 预处理器代替 JSR223 预处理器对我有好处。谢谢

类似于:

def imageStream = IOUtils.toByteArray(new URL("file:///D:/Image/picture.jpg"))
def imageBase64 = Base64.getEncoder().encodeToString(imageStream)

完整代码以防万一:

import groovy.json.JsonBuilder
import org.apache.commons.io.IOUtils

def imageStream = IOUtils.toByteArray(new URL("file:///D:/Image/picture.jpg"))
def imageBase64 = Base64.getEncoder().encodeToString(imageStream)



def json = new JsonBuilder()
json {
    myData {
        "firstName" vars.get("FirstName")
        "MiddleName" vars.get("MiddleName")
        "LastName" vars.get("LastName")
        "Image" imageBase64
    }
}

sampler.addNonEncodedArgument("",json.toPrettyString(),"")
sampler.setPostBodyRaw(true)

参考文献: