2017-11-07 2 views
0

に保存されていないファイルをダウンロードすることができ、プロジェクトがクリックされたときに、ユーザーのコンピュータにテキストファイルをダウンロードし、ダウンロードボタンを持つWebページで構成されています。このWebページでは、Java AWS-Lambda関数を呼び出すJavascriptとPHPを使用しています。データベースからのJavaグラブテキスト。BeanIOは - どのようにユーザーを書き込みするには、完全なアイデアを取得するには、サーバー

はもともと、私はそれはそうと、ローカルに作業していた:

StreamFactory sf = StreamFactory.newInstance(); 
sf.loadResource("mapping.xml"); 
File file = new File("C:\\test.txt"); 
BeanWriter bw = sf.createWriter("export", file); 

// beans written bellow 
... 
bw.write(recordName, bean); 

しかし、私は私の地元に救うことができるように起因ラムダ関数を使用しての性質のために、私はのように簡単にサーバーに保存することはできません(プログラム的にSSH-ingを要求するなど)。さらに、私のシニアは、自分のプロジェクトでファイルをサーバーに保存する必要がないように要求しました。そのため、後でファイルを削除する必要はありません。

私は今、このようにそれを行うにしようとしてきた

StreamFactory sf = StreamFactory.newInstance(); 
sf.loadResource("mapping.xml"); 
OutputStreamWriter output; 
BeanWriter bw = sf.createWriter("export", output); 

// beans written bellow 
... 
bw.write(recordName, bean); 

私はcreateWriterではなく、ファイルのライターを使用することができることを読んだが、私はそれが内に利用することができる方法を理解していませんファイルとしてダウンロードするjavascript側。現在、そのためのコードは簡単で、次のようになります。このプロジェクトは、サーブレットを使用していない

<a href="http://website.com/location/test.txt"download="test.txt">Download</a> 

。私のシニアは、AWS-Lambdaを使用してストリームに書き込むことについて忠告しています。 BeanIOを使用する必要があります。私が見た同様の質問のほとんどは、これらの課題を抱えていないので、この質問は重複しているために閉じてはいけません。

答えて

0

私はAWS-Lambdaについて知識がありませんが、グーグルではLeveraging Predefined Interfaces for Creating Handler (Java)、具体的にはExample 2: Creating Handler with Stream Input/Output (Leverage the RequestStreamHandler Interface)になりました。その記事から、インタフェースによって提供されたOutputstreamを使用して、応答をユーザーに書き戻すことができます。

これがうまくいけば、ファイルのダウンロード要求に似た何かをトリガーすると、ブラウザは結果を表示したり、自分のコンピュータ上のファイルとして応答を保存するようにユーザーに求めることができるのいずれか。

あなたのコードを持つことを組み合わせる

import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.io.StringWriter; 
import java.nio.charset.StandardCharsets; 

import org.beanio.BeanWriter; 
import org.beanio.StreamFactory; 

import com.amazonaws.services.lambda.runtime.RequestStreamHandler; 
import com.amazonaws.services.lambda.runtime.Context; 

public class HelloBeanIO implements RequestStreamHandler { 

    public void handleRequest(InputStream inputStream, 
     OutputStream outputStream, 
     Context context) 
     throws IOException { 

    StreamFactory sf = StreamFactory.newInstance(); 
    sf.loadResource("mapping.xml"); 

    // wrap the supplied OutputStream in a OutputStreamWriter 
    // and set the encoding you prefer 
    OutputStreamWriter writer = new OutputStreamWriter(outputStream, 
     StandardCharsets.UTF_8); 
    BeanWriter bw = sf.createWriter("export", writer); 

    // beans written bellow 
    ... 
    bw.write(recordName, bean); 
    } 
} 

重要な部分は、あなたがOutputStreamWriterとメソッドに渡されたOutputStreamを包むことです。

は、最も可能性が高い、それは何らかの形で多分ブラウザが応答を処理する方法の動作を変更することができ、応答のための正しいMIMEタイプを設定し、正常に動作し得るために行うにはより多くのものがあります。

関連する問題