【发布时间】:2019-11-26 17:19:08
【问题描述】:
我正在尝试在涉及文件上传的 Windows 10 上使用 Tomcat 8 运行 Grails 3.2 Web 应用程序。 webApp 正确启动,但是当我尝试远程上传任何文件时,我不断收到以下文件错误。请注意,消息中有两个绝对路径卡在一起,这将导致无效的文件规范。当我使用 localhost 作为 IP 地址访问主机内部的应用程序时,我没有收到此错误。任何帮助表示赞赏。
<g:uploadForm name="sstForm" controller="sstSetup" method="POST" >
<input id="w-mdf" type="file" name="wMDF" />
<div class="yui3-u-25-100" id="setup-submit">
<g:actionSubmit class="input block-page" name="submit" value="Submit" action="setupAction" onclick="return validateInput();"/>
<g:actionSubmit class="inputGrey block-page" name="cancel" value="Cancel" action="cancel"/>
</div>
</g:uploadForm>
然后在服务器端,我在控制器中抓取 MultiPart 文件对象并调用 tranferTo 将其转换为普通文件
File fileDest = new File("Path to some destination and file name")
multipartFile.transferTo(fileDest)
这里没有什么复杂的。然而,当上传来自远程位置时,它会抛出 FileNotFoundException。
错误:java.io.FileNotFoundException: D:\Users\RWSK70\Documents\Clark\CIM\Misc\Drools\DroolsIntelliJProject\drools-app\target\classes\rules\C:\Users\RWSK70\Documents\Clark\!!\CIM\Misc\Drools\DroolsIntelliJProject \drools-app\src\rules\application\1233275_RSF_v243.txt (文件名、目录名或卷标语法不正确)
【问题讨论】:
-
可能发生的原因有很多。您必须在您的应用中显示一些相关代码才能获得可靠的答案。
-
除了用于文件上传的 Grails 3 样板代码之外,上传中涉及的自定义代码并不多。
-
new File("Path to some destination and file name")- 你漏掉了有趣的部分。路径是硬编码的还是某些变量的值? -
文件路径不是硬编码的。 grails 3 web 表单提供了一个文件选择器,用于将应用程序指向输入文件的位置。如果不是来自应用程序主机 (localhost) 的任何文件路径都会引发相同的错误。很奇怪。
-
我无法重现。如果您认为这是框架的问题,请在github.com/grails/grails-core/issues 提出问题并链接到演示该行为的示例应用程序,我们可以解决它。