私は Rails アプリケーションを持っています。これは、内部の顧客が保存されたビジネス ドキュメントを表示するための代替手段です。ワード ドキュメントの電子メールと PDF は、Access 10 アプリケーションを介して SQL Server 10 で実行されている DB に入力され、ファイルのダウンロードを介して Access の Bound Object Frame コントロールに埋め込まれます。
バイナリ データは、関連付けられたレコードと共に sql データベース バックエンドに保存されます。ドキュメントはアクセス フロント エンドを使用して簡単に保存および読み取りできますが、DB からファイルを取得して Rails アプリを介してクライアントに送信するのに問題があります。
ドキュメントが格納されるフィールドは、SQL Server varbinary(max) フィールドです。
次の方法でブラウザに送信して読み込もうとします。
doc = @attachment.document
send_data doc, :filename => 'foo.docx'
ブラウザはファイルのダウンロード/開くダイアログを生成し、それを MS Word ドキュメントとして識別しますが、配信されたファイルは (ほぼ正しいバイト数を配信したとしても) 読み取ることができません。
たとえば、Word文書で使用しようとすると:
send_data doc, :type => "application/msword", :filename => 'foo.docx'
コントローラーから次のエラーが表示されます。
"\x8F" to UTF-8 in conversion from Windows-1252 to UTF-8
提案、アドバイスを感謝します。