AWS Lambda用替换字符(U + FFFD)替换多部分表单数据附件中的某些字符

时间:2019-02-27 11:31:52

标签: ruby aws-lambda multipartform-data character-replacement

我正在使用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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

您尝试将内容存储在UTF-8中,并且\x89无效的UTF-8。