无法下载 PDF

大家好,

我使用服务器本地存储来保存文件。我已上传了一个 PDF 文件,并且它已成功上传到服务器,在服务器上也能找到(我通过 SSH 登录手动确认过)。

Screenshot from 2019-12-24 14-44-42

这是我在尝试下载该 PDF 文件时出现的错误截图。

以下是下载事件的日志:

[discourse_cloud] Started GET "/uploads/short-url/ev4yCeBAtz19YgsTSEkhLMkKrFK.pdf" for 122.168.93.128 at 2019-12-24 09:16:40 +0000
[discourse_cloud] Processing by UploadsController#show_short as PDF
[discourse_cloud]   Parameters: {"base62"=>"ev4yCeBAtz19YgsTSEkhLMkKrFK", "extension"=>"pdf"}
[discourse_cloud] Sent file /home/deploy/discourse_cloud/releases/20191220210316/public/uploads/discourse_cloud/original/1X/65a1a66f4bddc09fbdab830a8c74c7fbe05cca98.pdf (0.2ms)
[discourse_cloud] Completed 200 OK in 11ms (ActiveRecord: 0.0ms)
[discourse_cloud] Started GET "/home/deploy/discourse_cloud/releases/20191220210316/public/uploads/discourse_cloud/original/1X/65a1a66f4bddc09fbdab830a8c74c7fbe05cca98.pdf" for 122.168.93.128 at 2019-12-24 09:16:40 +0000
[discourse_cloud] ActionController::RoutingError (No route matches [GET] "/home/deploy/discourse_cloud/releases/20191220210316/public/uploads/discourse_cloud/original/1X/65a1a66f4bddc09fbdab830a8c74c7fbe05cca98.pdf")
/home/deploy/discourse_cloud/shared/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:65:in `call'
[discourse_cloud]   Rendering exceptions/not_found.html.erb within layouts/no_ember
[discourse_cloud]   Rendered exceptions/not_found.html.erb within layouts/no_ember (0.6ms)
[discourse_cloud]   Rendered layouts/_head.html.erb (1.0ms)
[discourse_cloud]   Rendered common/_discourse_stylesheet.html.erb (0.6ms)
[discourse_cloud]   Rendered application/_header.html.erb (0.1ms)
[discourse_cloud]   Rendering html template
[discourse_cloud]   Rendered html template (0.0ms)

可能是什么错误?:-/

如果您没有通过 Discourse 上传文件,则需要在容器内修改 Nginx 配置。默认情况下,它并未配置为在任意目录中提供任意文件。

截图看起来是通过 Discourse 上传的,但 URL 路径看起来像是整理过的短链接,而不是原始链接?

你能试着把那个 PDF 文件上传到 try.discourse.org 看看是否能正常工作吗?也许问题出在那个特定文件上?

我猜上传其他类型的文件应该没问题吧?

嗯,我上传文件时没有遇到任何问题,但现在无法下载该文件。

我通过 Discourse 消息框上传了文件,上传成功,但我无法下载它。

是的,@Stephen,我可以通过我的 Discourse 顺利上传文件,但无法下载。:frowning:

请查看这张截图,它有一个下载按钮。当我尝试点击它时,无法下载。

这是我尝试使用下载按钮下载图片时出现的错误。(下载按钮可能使用了 Ruby 的 send_data 函数)

我只是想确认一下,这是否是 NGINX 的问题,还是与其他目录权限相关的问题。

谢谢

我也遇到了同样的问题。PDF 文件已上传,但随后无法下载该文件,而是跳转到“此页面不存在”的页面!

我进行了测试,在这里的 Meta 上可以轻松地上传和下载 PDF。

更新:我尝试了一些更改,我认为这更像是一个与英语以外的其他语言相关的 bug,而不是英语本身的问题。

我不得不重新创建一个带有英文名称的 PDF(之前文件名中包含波斯语字符)。之后,上传的文件可以正常下载,没有任何问题。

此外,带有波斯语名称的 PDF 文件在这里的 Meta 上也可以轻松地上传和下载。所以我认为这与管理员面板中的编码选项有关。

大家好,

抱歉回复晚了,但我通过修改 nginx.conf 文件解决了我的问题。修复非常简单,与 nginx.conf 有关(而我之前一直在尝试修复核心代码 :smiley:)。

我从 nginx.conf 中删除了这一行:

 proxy_set_header X-Sendfile-Type X-Accel-Redirect;

这个修改让下载功能正常工作了 :slight_smile:

从今往后我会更频繁地参与 :slight_smile:

谢谢,
Ashish P.