我看到這個鏈接寫消息,並在同一時間發送一個下載文件(的getWriter,的getOutputStream衝突)
How do I use getOutputStream() and getWriter() in the same servlet request?
而這個鏈接
best practice response.getOutputStream
我已經試過的東西但到目前爲止還不能成功。
我doGet方法
public void doGet(HttpServletRequest req, HttpServletResponse res){
this.doPost(req,res);
}
我doPost方法:
public void doPost(HttpServletRequest req, HttpServletResponse res){
ServletOutputStream sos = response.getOutputStream();
PrintWriter out = new PrintWriter(new OutputStreamWriter(sos, "utf-8"));
if(something happens){
out.println(string_specific_to_situation);
return;
}
else if(some other thing happens){
foo(sos,other_string_specific_to_situation);
out.println(blabla);
return;
}
else if(some thing else happens){
foo(sos,else_string);
out.println(dotdot);
return;
}
}
一個Foo方法
public void foo(ServletOutputStream sos,String str){
int length = 0;
InputStream is =null;
is= new ByteArrayInputStream(str.getBytes("UTF-8"));
//
// Set the response and go!
//
//
response.setContentType("application/octet-stream");
response.setContentLength((int)str.length());
response.setHeader("Content-Disposition", "attachment; filename=\"" + name + "\"");
//
// Stream to the requester.
//
byte[] bbuf = new byte[20];
DataInputStream in = new DataInputStream(is);
while ((in != null) && ((length = in.read(bbuf)) != -1))
{
sos.write(bbuf,0,length);
}
in.close();
sos.flush();
sos.close();
return;
}
正如你所看到的,我要讓用戶端下載文件, 也我想能夠顯示一條消息,
難道不可能嗎?
謝謝
感謝您的回覆,第二選擇我想發送消息給客戶端。如果我選擇顯示用戶下載文件的鏈接,如何將字符串(下載文件內容)作爲發佈參數傳遞給我? – merveotesi
tuxi - 不要。取而代之,當他們在查看消息後請求下載時,檢索或生成內容。 – ziesemer