我有一个Web UI,它接受作为scalatra.servlet.FileItem上传的文件,并传递给几个函数,这些函数对上传的文件执行某些操作。这工作正常。现在,我需要对此功能进行 junit 测试。使用此 junit 测试,不再需要上传文件。我只需要从一个位置阅读它。
val inFile = new File("resources/sample.xml")
我的问题是我需要将其传递给接受文件项作为参数的函数。我收到类型不匹配错误。如何将其更改为文件项?我看了几篇文章,但没有一篇有效。我想知道是否可以从文件转换为文件项。我也尝试过使用
val fileItem = new DiskFileItem("payloadFile", "plain/text", false, "Payload_FileItem", availableBytes, inFile).asInstanceOf[org.scalatra.servlet.FileItem]
但这仍然有错误:
java.lang.ClassCastException: org.apache.commons.fileupload.disk.DiskFileItem cannot be cast to org.scalatra.servlet.FileItem
我也尝试使用inputStreams,但不知道下一步该怎么做才能从流转换为FileItem(或者如果可能的话(。
val inputStream = getSystemClassLoader.getResourceAsStream("resources/sample.xml")
希望有人能帮忙。谢谢。
我认为这里有很多混乱; 因为实际上有两个类 - Apache 类,但是 scala 框架有自己的版本。
看这里 - FileUploadSupport.scala 定义了自己的类
case class FileItem(part: Part) {
因此,看起来您实际上可以直接创建该类的实例 - 如果您设法弄清楚该部分参数是关于什么的。
我的想法是得到答案 - 找出该 Part 参数的全名;然后看看您是否可以使用这些知识直接从那里实例化这样的 org.scalatra.servlet.FileItem 实例。