Я хочу загрузить документ MS Word 2003, который я создаю, с содержимым myString
. Я использовал следующий код:Не удается загрузить файл с помощью 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
- это класс, который затмение создало по умолчанию, когда я быстро исправил возникшую ошибку. Нужно ли мне модифицировать этот класс? Может ли кто-нибудь помочь?
EDIT: Реальный код я сейчас работаю, как показано ниже:
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){}
в то время как цикл заменяет заполнители во входном файле с требуемыми значениями и новое содержание в thisLine
должно быть написано на выходе файл. Мне нужна опция загрузки, которая появляется при нажатии ссылки, которая выполняет этот код.
Где моя строка объявлена и определена? Кроме того, вы уверены, что это не значение, которое является нулевым? – jmort253
Да, его не null. Функция не работает, даже если я пишу 'myOut.write (1234);' или 'myOut.write (" hello ".getBytes());' или любую другую строку непосредственно в нее. –
Вам нужно, чтобы ваш читатель попал во что-то? Я вижу, что вы объявили его на первой строке, но я не вижу, где вы его использовали. Я не делал File IO в возрасте, но я предполагаю, что вы включили это по какой-то причине. – jmort253