作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 Nginx 作为文件托管系统的 CDN。我看到了一个很棒的 nginx 模块,它允许 postgres 连接(https://github.com/FRiCKLE/ngx_postgres),它工作得非常好,但是当我尝试在具有别名指令的情况下使用它时,它似乎忽略了别名或文件下载,而是给我一个空文件。我的想法是,使用 URL 中的 UUID 并通过查询找到正确的文件,然后使用找到的详细信息更改文件名 header ,以便用户的客户端下载时自动将名称设置为原始文件名而不是 uuid。
这是代码。
location /dl{
postgres_output none;
postgres_pass database;
postgres_query "SELECT * FROM \"Files\" WHERE uuid = '$args'";
postgres_set $filename 0 name;
alias /home/ubuntu/fileStorage;
add_header Content-Disposition "attachment; filename=$filename";
}
我认为 postgres 指令以某种方式锁定了这个 block 。有没有一种方法可以在不影响下载 block 的情况下运行 postgres 查询?
最佳答案
看来你希望这条线
add_header Content-Disposition "attachment; filename=$filename";
将导致浏览器下载由$filename
给出的文件。这不是 Content-Disposition header 的工作方式,它只是告诉浏览器将响应主体解释为文件。您将不得不做一些额外的事情才能将正确的内容提供给客户。也许您真正想要的是发出重定向?
关于postgresql - 如何在 Nginx 中使用 Postgres 和静态文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559578/
我是一名优秀的程序员,十分优秀!