コンテンツをmyString
で作成しているMS Word 2003文書をダウンロードします。 私は、次のコードを使用していますHttpServletResponseを使用してファイルをダウンロードできません
BufferedReader reader = new BufferedReader(new FileReader(templatePathFilename));
HttpServletResponse response = new MyHttpServletResponse();
response.setContentType ("application/msword");
response.setHeader ("Content-Disposition", "attachment; filename=\""+outgoingFileName);
ServletOutputStream myOut = response.getOutputStream();
myOut.write(myString.getBytes());
myOut.flush();
myOut.close();
をしかしラインmyOut.write(myString.getBytes())
は、NullPointerExceptionができます。 MyHttpServletResponse
は、生成されたエラーをすばやく修正すると、デフォルトでEclipseが生成したクラスです。そのクラスを変更する必要がありますか? 誰でも助けてくれますか?
編集:私は働いている実際のコードは以下の通りです:
BufferedReader reader = new BufferedReader(new FileReader(templatePathFilename));
String outgoingFileName = outputPathFilename;
response.setContentType("application/msword");
response.setHeader("Content-Disposition", "attachment; filename="+outgoingFileName);
OutputStream myOut = response.getOutputStream();
try {
String thisLine;
while ((thisLine = reader.readLine()) != null) {
if(thisLine.contains("##"))
{
for (java.util.Enumeration e = FrontSheetMap.keys(); e.hasMoreElements();{
String name = (String) e.nextElement();
String value = FrontSheetMap.get(name).toString();
thisLine= thisLine.replaceAll("##" + name.toUpperCase() + "##", value);
}
}
myOut.write(thisLine);
myOut.write("\n");
}
myOut.flush();
}catch(Exception e){}
whileループは、必要な値を入力ファイル内のプレースホルダを置き換え、thisLine
に新しいコンテンツが出力に書き込まれますファイル。私はこのコードを実行するリンクをクリックするとポップアップするダウンロードオプションが必要です。
myStringはどこで宣言され定義されていますか?また、その値がnullではないと確信していますか? – jmort253
はい、そのnullではありません。この関数は、myOut.write(1234);やmyOut.write( "hello" .getBytes());や他の文字列を直接書き込んでも機能しません。 –
あなたの読者は何かに渡す必要がありますか?私はあなたが最初の行でそれを宣言したのを見ますが、実際にどこを使ったか分かりません。私は年齢でFile IOを行っていませんが、あなたがそれを理由で含めると仮定しています。 – jmort253