У меня есть данные CSV как
FirstName,MiddleName,LastName,ImageLocation
Jack|Michel|Rechards|C:\Image\picture.jpg
Tom|Peter|Kim|C:\Image\picture123.jpg
Я пытаюсь настроить Jmeter для чтения вышеуказанного файла данных и передачи изображения как данных формы в ресурс REST API PUT как данные формы. API принимает изображение как ByteBuffer.
В JMeter загрузка multipart / form-data доступна только для POST, но не для ресурса PUT.
Для изображения я написал код в BeanShell PreProcessor, который помещает byte [] в переменную.
String imageLoc = vars.get("ImageLocation");
File file = new File(imageLoc);
byte[] buffer = new byte[(int) file.length()];
InputStream ios = null;
try {
ios = new FileInputStream(file);
if (ios.read(buffer) == -1) {
throw new IOException(
"EOF reached while trying to read the whole file");
}
} finally {
try {
if (ios != null)
ios.close();
} catch (IOException e) {
}
}
vars.put("imageData", new String(buffer));
а переменная imageData передается в данных тела HTTP-запроса как
------=_parttest
Content-Type: image/jpeg; name=test.jpeg
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="Picture"; filename="test.jpeg"
${imageData}
------=_parttest--
По какой-то причине изображения не отображаются правильно для запросов от Jmeter. Если я сделаю аналогичный запрос PUT от почтальона к API для сохранения изображения и сделаю еще один запрос GET для чтения изображения, он будет успешно прочитан.
Либо я неправильно настроил свой тест (проблема с кодом beanShell или проблема с данными тела HTTP-запроса), либо есть лучший способ настроить этот тест для чтения изображений из пути в файле данных и передачи изображения в качестве данных формы в ресурс API PUT.
Жду совета специалистов.