您可以創建在服務器端和機會標準的servlet(延伸HttpServlet
,而不是RemoteServiceServlet
)提交的ID作爲客戶端的servlet參數。
現在你需要得到請求後創建excel文件併發送給客戶端。瀏覽器顯示自動彈出下載對話框。 但是,您應該確保您設置了正確的內容類型響應標頭。這個頭文件將指示瀏覽器是哪種類型的文件。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fileId = reguest.getParameter("fileId"); // value of file id from request
File file = CreatorExel.getFile(fileId); // your method to create file from helper class
// setting response headers
response.setHeader("Content-Type", getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", file.length());
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
input = new BufferedInputStream(fileInput);
output = new BufferedOutputStream(outputStream);
int count;
byte[] buffer = new byte[8192]; // buffer size is 512*16
while ((count = input.read(buffer)) > 0) {
output.write(buffer, 0, count);
}
} finally {
if (output != null) {
try {
output.close();
} catch (IOException ex) {
}
}
if (input != null) {
try {
input.close();
} catch (IOException ex) {
}
}
}
:從服務器到客戶端dowloded的所有文件都是空的,但文件不是空的。 – GameBuilder
我編輯了答案。立即嘗試並檢查是否在您的代碼中使用'contentStream.getStream()'獲取數據。 –
:什麼是輸入。 'new BufferedInputStream(input);' – GameBuilder