Wicket表单:错误 - 无法写入文件

时间:2013-10-28 18:19:40

标签: java tomcat wicket

我在wicket中的文件上传表单有问题。我无法将任何文件上传到在线服务器。

这个脚本已经有效,但有一段时间它停止了。

所以我搜索答案,但我得到了同样的错误。

我的代码等于:http://www.mkyong.com/wicket/wicket-file-upload-example/ 区别在于文件夹路径不是本地的,因为它在示例中,但通过https指向远程URL。

其他信息:

  • 服务器
    • 操作系统:Debian GNU / Linux 7(wheezy)
    • Tomcat:Tomcat 7
    • taget文件夹中的权限:777
  • 本地:
    • Tomcat:Tomcat 7
    • JDK:1.7
    • Wicket:6

测试

  1. 打开上传网站
  2. 选择文件aa.png(服务器中不存在)
  3. 按上传
  4. 结果:

    28 10 13 18:19:31:630 - ERROR - Unable to write file
    
    
    java.io.IOException: The filename, directory name, or volume label syntax is incorrect at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    
    28 10 13 18:27:02:370 - ERROR - Unexpected error occurred
    org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface 
    
    org.apache.wicket.markup.html.form.IFormSubmitListener 
    targeted at [Form [Component id = form]] on component [Form [Component id = form]] `threw an exception`
    
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.wicket.RequestListenerInterface.
    internalInvoke(RequestListenerInterface.java:258)
    ... 30 more
    Caused by: java.lang.IllegalStateException: Error
    at com.myproject.presentation.utils.examples.FileUploadPage$1.onSubmit(FileUploadPage.java:51)
    at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1246)
    at org.apache.wicket.markup.html.form.Form$9.component(Form.java:1240)
    at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274)
    at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:245)
    at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1239)
    at org.apache.wicket.markup.html.form.Form.process(Form.java:921)
    at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:767)
    at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:700)
    ... 35 more
    

1 个答案:

答案 0 :(得分:0)

来自档案的JavaDoc

  

公共文件(URI uri)

     

通过将给定文件:URI转换为一个来创建一个新的File实例   抽象路径名。

     

文件的确切形式:URI依赖于系统,因此   此构造函数执行的转换也与系统有关。

     

对于给定的抽象路径名,f保证

new File( f.toURI()).equals( f.getAbsoluteFile()) 
     

只要原始的抽象路径名,URI和新的   抽象路径名都是在(可能是不同的调用)中创建的   )相同的Java虚拟机。这种关系通常会   但是,当文件:在虚拟中创建的URI时,不能保留   一个操作系统上的机器被转换为抽象路径名   在不同操作系统上的虚拟机中。

     

参数:

     

uri - 一个绝对的分层URI,其方案等于“file”,非空路径组件,以及未定义的权限,查询和片段组件

     

抛出:

     

NullPointerException - 如果uri为null

     

IllegalArgumentException - 如果参数的前置条件不成立

     

自:   1.4

没有人说过http或https。