java.io.FileNotFoundException 使用 Jmeter - 使用 beanshell 预处理器

java.io.FileNotFoundException with Jmeter - Using beanshell pre processor

我在使用 BeanShell 预处理器对输入文件进行编码然后将编码文件包含在 "Send file with request" 中时遇到问题。

Jmeter 设置


BeanShell 预处理器

import org.apache.commons.io.FileUtils;
import org.apache.commons.codec.binary.Base64;
String file1 = FileUtils.readFileToString(new File("D:/File/test.txt"),"UTF-8");
vars.put("file1",new String(Base64.encodeBase64(file.getBytes("UTF-8"))));

错误信息

java.io.FileNotFoundException: ${file1} (The system cannot find the file specified)

如果您尝试执行以下操作:

  1. 将文件读入字符串
  2. 将内容编码为 Base64
  3. 将编码内容保存到另一个文件
  4. 将新文件路径保存到 JMeter 变量中

您的 Beanshell 代码应该如下所示:

String file1 = FileUtils.readFileToString(new File("D:/File/test.txt"), "UTF-8");
FileUtils.write(new File("D:/File/testbase64.txt"),new String(Base64.encodeBase64(file1.getBytes("UTF-8"))));
vars.put("file1","D:/File/testbase64.txt");

您的代码片段是

  1. 正在尝试将编码文件内容放入 file JMeter 变量
  2. 最后一行有错别字 file.getBytes() 应该改成 file1.getBytes()

有关 Apache JMeter 中 bsh 脚本的更多信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。