【发布时间】:2019-07-21 02:49:38
【问题描述】:
我正在使用 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
提前致谢。
【问题讨论】:
-
我的猜测是问题不在于写入文件,而在于
file_str的编码。无论在做什么,字符串编码都会强制它成为有效的 UTF-8。您需要在此过程中更早地查看 -
你是对的。我对 rails 进行了同样的尝试,甚至在控制器中执行操作之前就出现了错误。错误:"Encoding::UndefinedConversionError: "\x89" from ASCII-8BIT to UTF-8"
标签: ruby aws-lambda multipartform-data character-replacement