2011-12-06 33 views
0

我不確定它是否可以。 我想解析一個excel文件並讓用戶在我的應用程序(gae)中下載它。如何在gae中下載文件

public class dumpDataServlet extends HttpServlet { 
    public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
     String msg = ""; 
     boolean dumpFile = false; 
     JSONObject json = null; 
     resp.setCharacterEncoding(Constant.RESPONSE_CHARACTER_ENCODING); 
     try { 
      try { 
       msg = req.getParameter("dumpFile") + " "; 
       dumpFile = Boolean.valueOf(req.getParameter("dumpFile")); 
      } catch (Exception ex) { 
      }json = getFromOtherGAE(); 
      if (dumpFile) { 
       OutputStream out = resp.getOutputStream(); 
       this.parseExcelFile(json).write(out); //parseExcelFile will return a HSSFWorkbook 
       out.flush(); 
       out.close(); 
      } else { 
       resp.getWriter().println(json.toString()); 
      } 
     } catch (Exception ex) { 
      msg = ex.getClass() + " " + ex.getMessage(); 
      resp.getWriter().println(msg); 
     } 
    } 
} 

這段代碼有什麼問題嗎?或者gae只是做不到?

謝謝。

回答

0

我沒有看到你曾經初始化你的'json'對象。當你運行這段代碼時會發生什麼?

+0

對不起,我修改了它。 – vic

3

爲了讓瀏覽器將輸出識別爲Excel,您需要設置一些標題。例如:

resp.setContentType("application/vnd.ms-excel"); 
resp.setHeader("Content-Disposition","attachment; filename=download.xls"); 
+0

我試過了。但它仍顯示:{錯誤:服務器錯誤 服務器遇到錯誤,無法完成您的請求。 如果問題仍然存在,請報告您的問題並提及此錯誤消息以及導致該問題的查詢。} – vic

+0

在日誌中查找堆棧跟蹤。 –

+0

我試過了。什麼都不顯示我認爲那是因爲gae不允許它。 – vic