在使用 Rails 7 开发应用程序时,我们常常会遇到一些特定的技术挑战。今天我们要讨论一个常见问题:如何处理来自文本转语音 API 的二进制数据,并将其成功保存为 ActiveStorage 附件。
问题描述
假设你已经成功调用了一个文本转语音 API,并且通过 HTTP 请求获得了 200 的响应码,这意味着 API 调用是成功的。然而,当你试图读取响应体时,你会得到一大段看似无意义的二进制数据,如下所示:
ID3#TSSELavf58.29.100����]D:�)�ķ�L�5A��@7 2�L��3��8�ֳYKFY�@G-�( ���"�w��D@c�;a�S��-" ...这实际上是音频文件的二进制表示,但直接将这种数据保存为 ActiveStorage 附件时,会遇到ActiveSupport::MessageVerifier::InvalidSignature - mismatched digest错误。
解决方案
解决这个问题的关键是先将二进制数据保存为临时文件,然后再通过 ActiveStorage 附件的方式上传。以下是详细的步骤:
获取 API 响应:
response=http