Ошибка разрыва конвейера при загрузке в клон S3 файла PDF с именем, содержащим é, ï и т.д.

последнее приложение, которое я пересобрал час назад, я не могу воспроизвести на meta, предполагаю, что это связано с французской локализацией.

У меня возникает ошибка «broken pipe» при попытке загрузки PDF-файла с именем laïcité.pdf, но тот же файл, переименованный в laicite.pdf, загружается без проблем.
Файл laïcité.jpg также загружается корректно.

Файл с именем décroissance.pdf вызывает другую ошибку: «мы столкнулись с внутренней ошибкой. пожалуйста, попробуйте снова» :face_with_raised_eyebrow:

PS: Не уверен, что это имеет отношение к делу, но я также использую клон S3 (Scaleway), который также выдавал ошибку «broken pipe» при выполнении команды rake uploads.migrate_to_s3, хотя это кажется не связанным.

PPS: Да, возможно, это связано с загрузкой через клон S3. Я проверил: у меня есть файл с акцентом, загруженный три недели назад, непосредственно перед включением опции загрузки через S3 :roll_eyes:

1 лайк

Строка 62 в discourse/lib/file_store/s3_store.rb at main · discourse/discourse · GitHub

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

возможно, content_disposition следует отформатировать следующим образом:

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

как в:

если да, то, возможно, и эти content_disposition тоже:

4 лайка

Думаю, вы правы, такие проблемы с именами файлов всегда вылетают у меня из головы. Я смогу завтра отправить PR для исправления этого. Спасибо за сообщение!

4 лайка

Исправление для сборки здесь, которое скоро будет включено. Протестировано с именем файла PDF выше, и всё работает отлично :ok_hand:. Исправление скоро будет включено!

3 лайка