在JAVA中上载时出错“消息[JAVA.lang.IllegalArgumentException:im==null!]”

在JAVA中上载时出错“消息[JAVA.lang.IllegalArgumentException:im==null!]”,java,file-upload,dwr,fileoutputstream,Java,File Upload,Dwr,Fileoutputstream,我正在尝试上载一个图像文件和zip文件。首先,我开始上传图像,它给了我消息[java.lang.IllegalArgumentException:im==null!错误。但是,它仍然上传了图像。然后我添加了代码来上传zip文件。现在我也遇到了相同的错误。但是,与上次不同的是,图像只上传,大小为0字节 我正在使用DWR将数据带到服务器 DWR脚本: 更新:控制台日志 49 //System.out.println(dat); D:/Uploaded/Trials/49.jpg //System.o

我正在尝试上载一个图像文件和zip文件。首先,我开始上传图像,它给了我消息[java.lang.IllegalArgumentException:im==null!错误。但是,它仍然上传了图像。然后我添加了代码来上传zip文件。现在我也遇到了相同的错误。但是,与上次不同的是,图像只上传,大小为0字节

我正在使用DWR将数据带到服务器

DWR脚本:

更新:控制台日志

49 //System.out.println(dat);
D:/Uploaded/Trials/49.jpg //System.out.println(DATA_STORE_LOC+dat+".jpg");
745859 [18820833@qtp-7494106-7] WARN  org.directwebremoting.dwrp.BaseCallMarshaller  - --Erroring: batchId[1] message[java.lang.IllegalArgumentException: im == null!]
最后更新

我试着通过评论其他部分来单独上传zip文件。它可以上传。但是它的大小也是零字节

我哪里出了问题


任何建议!!!

您无法在上载字段中获取文件的二进制值。dwr.util.getValueuploadImage;的值要么是文件的路径,要么是空的,如果浏览器不允许您读取本地文件路径。因此,基本上您提交文本或什么都不提交,但尝试将其作为文件读取

我曾经在DWR应用程序中实现了一个上传文件,但我使用了iframe来处理文件上传功能。最近的浏览器FF3.6+、Safari4+、Chrome确实支持使用XHR发送文件,但不指望用户使用XHR


您可以使用诸如之类的库来处理此问题,它们甚至为服务器端提供了一个Java示例。如果可用,它将使用XHR,并采用iframe解决方法。

从何处获得此异常?您可以提供有关stacktrace输出的更多详细信息吗?@Abdel Olakara:我刚刚更新了一些有关日志的信息。您或许应该补充一下您正在使用DWR并包含使用它的代码。@pjesi:您找到了。我认为上面的代码将足以指导我。好的,现在我将再次更新问题。谢谢。我认为这是一个简单的问题,pro很容易发现我的错误。但是回答率让我再次搜索它。我已经提到过,我能够上传imag是的,上面的代码相同。我测试了它。这很有效。就像我获取zip文件的方法一样。我在ZipInputStream阅读器中读取它。你能告诉我如何将它存储为服务器中的zip文件吗。所有的示例都是关于从文本文件读取zip或创建zip文件。我的问题是我有一个读取zip文件的方法,它在ZipInputStream中,最后是我想把它保存在某个位置。你能告诉我怎么做吗!!!无论如何,谢谢你的回复。我等了6个小时才得到答案。再次感谢!!!我们可以通过dwr.util.getValue获得上传文件url。我的问题是由版本不匹配引起的。谢谢你的回复,很抱歉浪费了你的时间。
public class DataUpload {
private static String DATA_STORE_LOC = "D:/Uploaded/Trials/";
public Path uploadData(InputStream image, InputStream file) throws IOException{
Path path = new Path();
BufferedImage img = ImageIO.read(image);
Date date = new Date();
DateFormat format = new SimpleDateFormat("ss");
String dat = format.format(date);
System.out.println(dat);
try {
    path.setPath1(DATA_STORE_LOC+dat+".jpg");
    System.out.println(DATA_STORE_LOC+dat+".jpg");
    ImageIO.write(img, "jpeg", new File(DATA_STORE_LOC+dat+".jpg"));
    System.out.println(true);
    byte[] buffer = new byte[1024];
    int len;
    File f2 = new File(DATA_STORE_LOC+dat+".zip");
    path.setPath2(DATA_STORE_LOC+dat+".zip");
    OutputStream out = new FileOutputStream(f2);
    while((len = file.read(buffer)) > 0){
            out.write(buffer, 0, len);
    }
    file.close();
    out.close();
} catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}
return path;

}
49 //System.out.println(dat);
D:/Uploaded/Trials/49.jpg //System.out.println(DATA_STORE_LOC+dat+".jpg");
745859 [18820833@qtp-7494106-7] WARN  org.directwebremoting.dwrp.BaseCallMarshaller  - --Erroring: batchId[1] message[java.lang.IllegalArgumentException: im == null!]