2016-05-06 39 views
1

からzipファイルを管理する:が、私はこの問題を持っているHTTP GET応答

私は、サーバーからzipファイルをダウンロードする必要があり、このジッパーは.xodと.PNGが含まれています。 私は、ドメイン間の問題を克服するためにAngular js、java springを使用しています。私のhtt.get angular call java springコントローラであり、真のgetコールを行います。 私はzipをダウンロードしなければならない - >このジップを角に戻し、解凍し、ファイルを抽出してIndexedDBに保存してください。

これは私の角度コードです:

var req = { 
      method: 'GET', 
      url: CONTEXT_PATH+"/services/data/"+meetingId, 
      headers: { 
       'Content-Type': undefined 
      } 
    } 

    $http(req).then(function(data){ 
     console.log("rest call done!"); 
     console.log(data); 
    }); 

これでJavaの春コード:

@RequestMapping(value="/data/{meetingId}", method = RequestMethod.GET) 
public Buffer getMeeting(@PathVariable(value="meetingId") String meetingId) { 
    byte[] file = new byte[2048]; 
    Buffer buf =null; 
    try { 

     String url = getContentServer()+"/data?username="+getUsername()+"&password="+getPassword()+"&id="+meetingId; 

     logger.info("start Rest template"); 
     RestTemplate templ = new RestTemplate(); 
     file = templ.getForObject(url, byte[].class); 
     logger.info("PRE BUF"); 
     buf = ByteBuffer.wrap(file); 
     logger.info("POST BUF"); 

    } catch (Exception e) { 
     String msg = "Error retrieving meeting list"; 
     logger.error(msg, e); 
    } 
    logger.info("file zip --> "+file.length); 
    logger.info("buf --> "+buf+" -- buf.array --> "+ buf.array()); 
    return buf; 
} 

これはにconsole.logです:

オブジェクト{データ:「UEsDBBQACAAIAA5IpkgAAAAAAAAAAAAAAAAJAAAAMTYwMzQucG ... AcqwpAGxvZ28ucG5nUEsFBgAAAAAIAAgAuwEAAMa/KQAAAA == "、status:200、config:Object、statusText:" OK "}

私はこのバッファをデコードして、クライアント側のファイルを抽出できることはわかりません。

ありがとうございました。

答えて

0

解決策を見つけるために少し調べました。私の疑いはあります:あなたがdataBaseに保存するデータはBLOB型ですか、単にファイルのパスを保存すればOKですか?

私はサーバー側でこれを行う方がよいと思います。私はサーバー側で仕事が大好きで、クライアントではそれほど難しくありません。 https://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipFile.html

と(それが少し変更される場合がありますので、テストを行わずに)私が書いたこのコード・サーバー・サイド:だから私はこれを見つけたzipファイルを制御するJavaクラスを探し

Enumeration<E> listEntries = zip.entries() 

    for (listEntries; listEntries.hasMoreElements();) { 
    ZipEntry item = getEntry(listEntries.nextElement().toString()) 
    InputStream fileStream = getInputStream(item) 
    } 

ことのInputStreamを使用すると、圧縮されていないファイルの名前のリスト、またはハッシュマップ、arraylist、ストリームのリスト、ファイル名、または必要なものを返します。例えば

List<String> fileNames 

又は

HashMap<String, Object> filesStreams 

ちょうど私は春に慣れていません。 Listを返すか、Bufferを返す必要がありますか?あなたがバッファを返す必要があるなら私に教えてください。私は別の解決策を見つけるでしょう。 ;)

+0

まずはおかげさま。 Pratically私はこのファイルをpdftron webviewer(角側)に渡す必要があります。このファイルを保存することができます。indexedDbはアイデアですが、実際は解決策ではありません。春から晩までの結果を返すのに問題があったので、私はバッファを返します。私はこのジッパーを角に通してクライアント側に抽出する必要がありますが、実際にはそれを行うことはできません。私は必死です – KPN24

+0

私はちょうどwebviewerについて読んで、あなたが必要なものは、それをinstanziateへの道です: http://www.pdftron.com/webviewer/demo/doc/symbols/PDFTron.WebViewer。html#コンストラクタ しかし私の質問は、そのバネ関数でBufferの代わりにList を返すことができれば、それぞれのバッファで各バッファを識別することができます。必要なものがURLの代わりに各ファイルのバッファです。 –

+0

はい私はそれを返すことができる、私はどのメソッドを返す必要があるかを決定することができます。 – KPN24

関連する問題