0

画像ファイルと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ファイル自体を単独でアップロードしようとしました。そのアップロードを取得します。しかし、そのサイズもゼロバイトです!!!

どこが間違っているのですか????

任意の提案!!!

4

1 に答える 1

0

アップロードフィールドでファイルのバイナリ値を取得することはできません。の値はdwr.util.getValue("uploadImage");、ファイルのパスであるか、ブラウザでローカルファイルのパスを読み取れない場合は空です。つまり、基本的には、テキストを送信するか、何も送信しないで、ファイルとして読み取ろうとします。

かつてDWRアプリケーションにアップロードファイルを実装しましたが、ファイルのアップロード機能を処理するためにiframeを使用しました。最近のブラウザー(FF3.6 +、Safari4 +、Chrome)は、XHRを使用したファイルの送信をサポートしていますが、ユーザーがXHRを使用していることを期待していません。

FileUploaderなどのライブラリを使用してこれを処理できます。サーバー側のJavaの例もあります。可能な場合はXHRを使用し、iframeの回避策にフォールバックします。

于 2010-11-11T14:23:07.870 に答える