1

我正在使用 AWS lambda 函数接收带有附件的多部分请求并将它们上传到 S3。

但是 Lambda 函数用替换字符替换了几个字符,因此附件变得损坏。

我检查了一个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

提前致谢。

4

1 回答 1

0

您需要打开二进制模式才能处理(写入)二进制文件。

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

您尝试以 UTF-8 存储内容并且\x89不是有效的 UTF-8。

于 2019-02-27T11:56:06.910 回答