0

我有一个 Web UI,它接受作为scalatra.servlet.FileItem上传的文件,并传递给对上传的文件执行某些操作的几个函数。这工作正常。现在,我需要为这个特性做一个junit测试。使用此 junit 测试,不再需要上传文件。我只需要从一个位置读取它。

val inFile = new File("resources/sample.xml")

我的问题是我需要将它传递给接受 FileItem 作为参数的函数。我收到类型不匹配错误。我如何将其更改为 FileItem?我看过几篇文章,但没有一个有效。我想知道是否甚至可以从 File 转换为 FileItem。我也尝试过使用

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")

希望任何人都可以提供帮助。谢谢。

4

1 回答 1

0

我认为这里有很多混乱;因为实际上有两个类 - apache 类,但是那个 scala 框架有自己的东西版本。

这里- FileUploadSupport.scala 定义了自己的

case class FileItem(part: Part) {

所以看起来你实际上可以直接创建该类的实例——如果你设法弄清楚那个部分参数是关于什么的。

我的想法是得到答案 - 找出那个 Part 参数的全名;然后看看您是否可以使用该知识直接从那里实例化这样的 org.scalatra.servlet.FileItem 实例。

于 2017-04-04T10:42:10.380 回答