-1

PDFファイルを取り込んで表示するWebアプリにしたいのですが、http 500エラーが発生しました。リクエストからバイト配列を抽出してレスポンス出力ストリームに追加していると思いました。どこが間違っていたのですか?

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getOutputStream().write(request.getParameter("f").getBytes());
    response.getOutputStream().flush();
    response.getOutputStream().close();
}

ここにhtmlページがあります

<body>
<form action="display" method="post" enctype="multipart/form-data">
PDF FILE : <input type="file" name="f">
<input type="submit" value="display">
</form>
</body>

ここに私が得たエラーがあります

java.lang.NullPointerException
    display.doPost(display.java:43)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722
4

3 に答える 3

2

マルチパート リクエストから有効なパートを取得する必要があります。Apache Commons FileUpload または Servlets 3.0 Spec を使用できます。

Part filePart = request.getPart("f"); // Retrieves <input type="file" name="f">
InputStream filecontent = filePart.getInputStream();
// ... read input stream
于 2013-09-25T09:19:47.213 に答える
0

呼び出しは必ずresponse.getOutputStream()1 回だけにしてください。

OutputStream os = response.getOutputStream();
os.write(bytes);
os.flush();
os.close();

アップロードされたファイルは、リクエスト パラメータとして含まれていません。NullPointerExceptionそれがあなたのコードの理由です。リクエストの入力ストリームを介して pdf コンテンツを取得する必要があります。そのためには、サードパーティ ライブラリまたはサーブレット 3 仕様を使用してください。

http ヘッダー (コンテンツ タイプなど) を設定したい場合は、OutputStreamviaにバイトを書き込む前にそれらを設定する必要がありますresponse.setHeader()

于 2013-09-25T09:38:35.973 に答える