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 パスは実際のものではなく、整理された短縮 URL のように見えますか?

その PDF を try.discourse.org にアップロードして、そこで動作するか試してみてください。もしかしたら、その特定のファイルに問題があるのかもしれませんね。

他の種類のファイルのアップロードは問題なく動作していますか?

ええと、ファイルをアップロードする際に問題が発生しませんが、現在はファイルをダウンロードできなくなっています。

Discourse のメッセージボックスを使用してファイルをアップロードし、正常にアップロードされましたが、ダウンロードすることができません。

はい、@Stephen、Discourse を使ってファイルをスムーズにアップロードできますが、ダウンロードはできません。:frowning:

このスクリーンショットをご覧いただけますでしょうか。ダウンロードボタンが表示されています。クリックしようとしましたが、ダウンロードできません。

ダウンロードボタンを使って画像をダウンロードしようとした際に発生したエラーです。(ダウンロードボタンはおそらく send_data Ruby 関数を使用しています)

これは NGINX の問題か、他のディレクトリの権限に関する問題なのかを理解したいだけです。

ありがとうございます

同じ問題に直面しました。PDF ファイルはアップロードされるものの、その後ファイルをダウンロードできず、「このページは存在しません」というページに移動してしまいます。

テストしたところ、Meta 上では PDF のアップロードとダウンロードが簡単にできました。

更新:いくつかの変更を試した結果、これは英語ではなく他の言語に関連するバグではないかと推測します。

PDF ファイルを英語の名前で再作成する必要がありました(以前はファイル名にペルシャ語の文字が含まれていました)。その後、アップロードしたファイルを問題なくダウンロードできるようになりました。

また、ペルシャ語の名前が付いた PDF ファイルも、Meta上では簡単にアップロードおよびダウンロードできました。そのため、これは管理パネルの「エンコーディング」オプションに関連しているのではないかと考えられます。

チームの皆様、こんにちは。

返信が遅くなり申し訳ありません。しかし、nginx.conf ファイル内で変更を加えることで問題を解決しました。非常に簡単な修正で、nginx.conf に関連するものでした(コアコードを修正しようとしていました :smiley: )。

nginx.conf から以下の行を削除しました。

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

これでダウンロードが機能するようになりました :slight_smile:

今後はより頻繁に投稿するよう努めます :slight_smile:

ありがとうございました、
アシュシュ・P。