S3 のクローンへのアップロード時に発生する Broken pipe エラー:é、ï などを含む名前の PDF ファイル

1 時間前にビルドした最新のアプリですが、Meta 上では再現できません。おそらくフランス語のローカライゼーションに起因するものだと推測します。

laïcité.pdf という名前の PDF をアップロードしようとすると「broken pipe」エラーが発生しますが、同じファイルを laicite.pdf にリネームすると正常に動作します。
laïcité.jpg も問題なく動作します。

décroissance.pdf という名前のファイルでは、「内部エラーが発生しました。もう一度お試しください」という異なるエラーが表示されます::face_with_raised_eyebrow:

追伸:関連するかどうかは不明ですが、S3 のクローン(Scaleway)も使用しており、rake uploads.migrate_to_s3 を実行した際にも同様に「broken pipe」エラーが発生しました。ただし、これは無関係な可能性が高いと感じています。

追伸2:はい、S3 クローンのアップロードに関連しているかもしれません。S3 アップロード機能を有効にする直前に、アクセント記号を含む 3 週間前のアップロードを確認しました::roll_eyes:

「いいね!」 1

discourse/lib/file_store/s3_store.rb at main · discourse/discourse · GitHub の 62 行目

options[:content_disposition] = "attachment; filename=\"#{filename}\""

content_disposition は、以下のようにフォーマットされるべきかもしれません。

options[:content_disposition] = ActionDispatch::Http::ContentDisposition.format(
        disposition: "attachment", filename: upload.filename
      )

例:

もしそうであれば、これらの content_disposition も同様かもしれません:

「いいね!」 4

おっしゃる通りだと思います。ファイル名に関するこのような問題は、いつも見落としがちですね。明日にはこの問題を修正するプルリクエストを作成できるはずです。ご報告ありがとうございます!

「いいね!」 4

このビルドの修正が近日中にマージされます。上記の PDF ファイル名でテストしたところ、正常に動作しています :ok_hand:。修正は近日中に反映されます!

https://github.com/discourse/discourse/pull/10108

「いいね!」 3