我有服务器端webapp,我正在尝试使用Apache POI生成一个excel文件,该文件由backing bean提供下载。我能够在服务器磁盘上写入文件,但不能将其写入HTTP响应。
这是我的代码
@IBAction func findContact(sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open() {
do {
defer { contactDB.close() }
let querySQL = "SELECT address, phone FROM CONTACTS WHERE name = ?"
let results = try contactDB.executeQuery(querySQL, values: [name.text!])
if results.next() {
address.text = results.stringForColumn("address")
phone.text = results.stringForColumn("phone")
status.text = "Record Found"
} else {
status.text = "Record not found"
address.text = ""
phone.text = ""
}
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}
}
}
结果如下:
在我尝试过的所有浏览器中都会出现这种情况:Chrome,FF和IE。我希望你能指出我在这里缺少的东西。
答案 0 :(得分:0)
最后在BalusC中找到了解决方案给出的链接。我在createExcel()
标记内的JSF中调用了<a4j:commandButton>
方法,该方法通过ajax调用方法。将其更改为<h:commandButton>
,现在它正在运行。
答案 1 :(得分:-1)
浏览servlet时,浏览器不会打开一个邀请您下载文件的对话框?我想原因是你错过了在引号之间包含文件名:
response.addHeader("Content-Disposition", "attachment; filename=\"testxls.xls\"");