我有一个web,它接受上传为scalatra.servlet.FileItem的文件,并传递给几个函数,这些函数对上传的文件做一些事情。这是正常工作的。现在,我需要对这个特性进行junit测试。通过这个junit测试,该文件不再需要上传。我只需要从某个地方读出来。
val inFile = new File("resources/sample.xml")我的问题是,我需要将它传递给接受FileItem作为参数的函数。我得到了一个类型错配错误。如何将此更改为FileItem?我看过几篇文章,但都没有用。我想知道是否有可能从文件转换为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")希望有人能帮上忙。谢谢。
发布于 2017-04-04 10:42:10
我认为这里有很多混乱之处;因为实际上有两个类--Apache类,但是那个scala框架有它自己的版本。
请参见这里 - FileUploadSupport.scala定义它的自有类。
case class FileItem(part: Part) {因此,看起来您实际上可以直接创建该类的实例--如果您能够理解部件参数是关于什么的话。
我的想法是给出答案--给出这个部件参数的全名;然后看看您是否可以使用这些知识直接从那里实例化这样一个org.scalatra.servlet.FileItem实例。
https://stackoverflow.com/questions/43204032
复制相似问题