3


2

Javaを使用してzipファイルをアップロードする方法は?

zipファイルをアップロードしようとしています。 私のプロジェクトでは、クライアント側でDWRを使用し、サーバー側でJavaを使用しています。 データをアップロードするためのDWRチュートリアルで見たように(Webサイトにはありません。 彼らは、dwr.rarバンドルを提供しています)、以下の行で入力を取得しています。

var image = dwr.util.getValue('uploadImage');
var file = dwr.util.getValue('uploadFile');
var color = dwr.util.getValue('color');

_ dwr.util.getValue()は、任意の要素(この場合はファイルオブジェクト)の値を取得するユーティリティです。//チュートリアルで言及されています。 _

だから、以下のコードでそのユーティリティを使用してzipファイルを取得します。

  • Javascript:*

function uploadZip(){
var file = dwr.util.getValue("uploadFile");
dwr.util.setValue("uploadFile", null);
DataUpload.uploadData(file, function(data){
    if(data != null){
        $("#zipURL").html("Upload Completed!!!");
        $("#zipURL").append("Location: "+data.path2);
    }
});
}
  • HTML:*

ZIP Uploader



Select File:

[#zipURL]

  • Javaコードは次のとおりです*

public class DataUpload {
private static String DATA_STORE_LOC = "D:/BeenodData/Trials/";

public Path uploadData(InputStream file) throws IOException{//In the tutorial the
          //parameters are in type of BufferedImage & String.
          //They used it for image and text file respectively.
          //In an another example(out of DWR site) they used InputStream for receiving
          //image

    try {
    byte[] buffer = new byte[1024];
    int c;
    File f2 = new File(DATA_STORE_LOC+dat+".zip");
    path.setPath2(DATA_STORE_LOC+dat+".zip");
    FileOutputStream fos = new FileOutputStream(f2);
    c = file.read();
    System.out.println(c);
    while ((c = file.read()) != -1) {
        fos.write(c);
         }
    file.close();
    fos.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return path;

}

このコードはエラーなしで実行されます。 ただし、出力は空のzipファイルです。 私は何か間違ったことをしていることを知っています。 私はそれを見つけることができません。

_ _ 実際、zipファイルをInputStreamとして受け取っています。

javaを使用してInputStream(zipファイル)をzip.fileに_write_する必要がありますか?

javaメソッドパラメータを「ZipFileファイル」として設定するとどうなりますか? 私はそれを試しませんでしたが、まだそれについて学ぶための良いチュートリアルを探しています。 _ _

提案やリンクはもっと感謝します!!!!! 前もって感謝します!!!

2 Answer


2


ここに、ZIPファイルの作成に関する2つの例を示します。

http://www.java2s.com/Tutorial/Java/0180File/0601ZipOutputStream.htm[http://www.java2s.com/Tutorial/Java/0180File/0601ZipOutputStream.htm]

ZIPファイルの読み取りに関する例を次に示します。


0


また、Javaで同じ種類のバックエンドコードを実装しましたが、Zipファイルが作成されるという同じ問題に直面していましたが、その内容は空です。

後で、私がAPIに対して行っていたリクエストは、添付したファイルが「--data-binary」形式ではなかったことがわかりました。 そこで、この形式でリクエストを行いました。

curl --data-binary @"/mnt/c/checknew.zip" http://localhost/api/upload

あなたがどのリクエスト形式を multipart / form-data`または Base-64`エンコードで作成しているかわかりません。

Base-64でエンコードされたリクエスト(つまり、「-data-binary」)を作成したときにコードが機能しました