2017-04-27 65 views
0

我有以下CSV的JMeter图片Base64编码后通过预处理

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并发布? 使用Beanshell预处理器对我来说会比较好,而不是JSR223预处理器。谢谢。

回答

2

喜欢的东西:

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) 

参考文献:

+0

谢谢。有效。 – Esty