【问题标题】:Convert File to FileItem Using Scala使用 Scala 将文件转换为 FileItem
【发布时间】:2017-04-04 10:01:04
【问题描述】:

我有一个 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")

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

【问题讨论】:

    标签: scala file junit scalatra fileitem


    【解决方案1】:

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

    参见here - FileUploadSupport.scala 定义了它的自己的

    case class FileItem(part: Part) {
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2015-09-04
      • 2018-06-13
      • 2019-02-20
      相关资源
      最近更新 更多