我正在尝试将特定字符串导出为 csv 文件,并且希望用户能够下载该文件。IHP 具有 createTemporaryDownloadUrl 函数,该函数接收 StoredFile,然后创建临时下载链接。问题是,我不想将此 CSV 文件存储在服务器上,因为它需要额外的开销,例如在临时下载链接过期后删除该文件。
我可以使用 renderPlain 渲染文本变量,但我不完全确定如何自动化下载过程(因为用户必须右键单击,下载为,然后自己重命名文件)
我首先尝试通过存储文件来使用常规的 createTemporaryDownloadUrl 方法,但在临时下载 url 过期后没有简单的方法删除文件。我能够将 CSV 内容显示为纯文本文件,但没有明显的方法让用户下载它。
小智 5
在您的操作中,您可以设置Content-Disposition标头以触发类型变量的下载Text。在此示例中,我将分别使用fileName和fileContent作为文件的名称和内容:
...
action DownloadCSV = do
...
-- These could be from the database, etc
let fileName = "MyFile.csv"
fileContent = "Name, Age\nBob, 30"
setHeader ("Content-Disposition", "attachment; filename = " ++ cs fileName)
renderPlain $ cs fileContent
...
Run Code Online (Sandbox Code Playgroud)
setHeader用于告诉浏览器下载给定名称的文件,然后renderPlain向浏览器发送文件内容。
当然,通过将文件名更改为不同的文件扩展名,这可以用于任何类型的文本文件。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |