Ошибка при загрузке в JAVA "сообщение [java.lang.IllegalArgumentException: im == null!]" - PullRequest
0 голосов
/ 11 ноября 2010

Я пытаюсь загрузить файл изображения и zip-файл.Сначала я начал с загрузки изображений, это дало мне message[java.lang.IllegalArgumentException: im == null! Ошибка.Но, тем не менее, он загрузил изображение.Затем я добавил код для загрузки ZIP-файла.Теперь также я получаю ту же ошибку.Но, в отличие от прошлого раза, изображение загружается только с размером 0 байт.

Я использую DWR для передачи данных на сервер,

Сценарий DWR:

function uploadImage(){
var image = dwr.util.getValue("uploadImage");
var file = dwr.util.getValue("uploadFile");
dwr.util.setValue("uploadImage", null);
dwr.util.setValue("uploadFile", null);
DataUpload.uploadData(image, file, function(data){
    if(data != null){
        $("#imgURL").html("<p>Upload Completed!!!</p>");
        $("#imgURL").append("Location: "+data.path1);
        $("#zipURL").html("<p>Upload Completed!!!</p>");
        $("#zipURL").append("Location: "+data.path2);
    }
});

}

Это код, который я пробую.

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!]

Окончательное обновление

Я попытался загрузить сам zip-файл, комментируя другие части.Его получить загрузить.Но его размер также равен нулю байтов !!!

Куда я иду не так ????

Любые предложения !!!

1 Ответ

0 голосов
/ 11 ноября 2010

Вы не можете получить двоичное значение файла в поле загрузки. Значение dwr.util.getValue("uploadImage"); является либо путем к файлу, либо пустым, если браузер не позволяет вам прочитать локальный путь к файлу. Таким образом, в основном вы отправляете текст или ничего, но пытаетесь прочитать его как файл.

Однажды я реализовал загрузку файла в приложении DWR, но я использовал iframe для обработки функции загрузки файла. Последние браузеры (FF3.6 +, Safari4 +, Chrome) поддерживают отправку файлов с XHR, но не рассчитывают, что ваши пользователи будут использовать их.

Вы можете использовать библиотеку, такую ​​как FileUploader , чтобы справиться с этим для вас, у них даже есть пример Java для серверной части. Он использует XHR, если он доступен, и использует обходной путь iframe.

...