![](/img/trans.png)
[英]Downloading file to a specified location on client machine from server using servlet
[英]Unexpected character when downloading file client side from a servlet
我創建了一個Servlet,以下載客戶端之前在表單中(在textarea中)用表單發布的特定文本...客戶端中的表單沒什么特別的:
form = new FormPanel();
form.setMethod(FormPanel.METHOD_POST);
form.setAction(GWT.getModuleBaseURL() + "services/export");
exportButton = new Button(resource.SUBMENU_Export(), new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
});
這是服務器端的代碼(serlvet):
package com.server.servlet;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExportServlet extends HttpServlet implements Servlet {
private static final long serialVersionUID = 7526472295622776147L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
String expl = req.getParameter("Expl");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=hint.txt;");
OutputStream stream = response.getOutputStream();
ObjectOutputStream objectStream = new ObjectOutputStream(stream);
objectStream.writeObject(expl);
objectStream.flush();
}
}
但是當我打開下載的文件時,文件的開頭只有意外的字符:
"`¬í tč-`"
將這些字符寫入我的文件時我不知道......
ObjectOutputStream
用於將“任意”Java對象序列化為二進制數據格式,該格式易於使用ObjectInputStream
從另一個Java程序讀取。 聽起來不像那樣你只想輸出一些文字。 最簡單的方法是:
OutputStream stream = response.getOutputStream();
stream.write(expl.getBytes("UTF-8"));
如果您要編寫更多的文本數據,則可以使用Writer:
OutputStream stream = response.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
writer.write(expl);
writer.flush(); // flush text data from writer to stream
輸出流用於發送任意二進制數據,這可能是您想要的也可能不是。 在上面,流保持打開狀態,因此您可以在文本后添加更多數據。 如果您所有的輸出都是文本,則最好將內容類型設置為text/plain
並使用response
的writer代替:
response.setCharacterEncoding("UTF-8");
PrintWriter writer = response.getWriter();
writer.write(expl);
請注意,編寫器和流將被Web容器自動關閉,因此您不必自己進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.