AWS Lambda заменяет определенные символы из вложений данных, состоящих из нескольких частей, символом замены (U + FFFD) - PullRequest
0 голосов
/ 27 февраля 2019

Я использую лямбда-функцию AWS для получения составного запроса с вложениями и загрузки его на S3.

Но лямбда-функция заменяет несколько символов заменяющим символом, поэтому вложение становится поврежденным.

Я проверил файл PNG.пример содержимого: \x89PNG\r\n\u001A\n\u0000\u0000\u0000

Все символы принимаются как есть, но \x89 или вообще \x** заменяются заменяющим символом (U + FFFD).

Яизвлечение вложения file_str в виде строки и запись в файл с последующей загрузкой в ​​s3.

File.open(file_path, 'w') do |f|
  f << file_str
end

Заранее спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Вам необходимо включить двоичный режим для работы (для записи) двоичных файлов.

#                      ⇓ THIS
File.open(file_path, 'wb') do |f|
  f << file_str
end

Вы пытаетесь сохранить содержимое в UTF-8, а \x89 недопустимо в UTF-8.

...