2016-08-29 14 views
0

ruby​​XL gemで作成したxlsxファイルをAngularJSというフロントエンドに送信します。ワークシートをストリームに保存してsend_dataメソッドで送信するとデータが取得されますが、作成されたドキュメントは破損しているため開けません。xlsxファイルをフロントエンドに送信する - AngularJS

workbook = RubyXL::Workbook.new 
worksheet = workbook[0] 
worksheet.sheet_name = 'Average of Team' 
worksheet.add_cell(0, 0, 'A1') 
buffer = workbook.sream 
send_data buffer 

データをディスクに保存できます。しかし私はそれをクライアント側に送ることはできません。ですから、私はangularjsからデータにアクセスできます。

workbook = RubyXL::Workbook.new 
worksheet = workbook[0] 
worksheet.sheet_name = 'Average of Team' 
worksheet.add_cell(0, 0, 'A1') 
path = "#{Rails.root}/tmp/#{Time.now.strftime('%Y%m%d%H%M%S%L')}.xlsx" 
workbook.write(path) 
send_file path 

私はクラウドにブックを保存してクライアント側にリンクを送信したくありません。私の問題の最善の解決策は何ですか?私が間違っているところ?

UPD: 保存したファイルを送信しようとすると、送信完了前にファイルが削除されたようです。

UPD: 私はデータを送信しているとき、データのエンコードに問題があります。私はstring.bytes.to_a.pack("C*"),string.force_encoding('binary')を使ってみました。しかしそれは私を助けませんでした。

答えて

0

私は、問題はrubyとjsライブラリの間に互換性がないと思います。 1つの可能な解決策は、同じlibsでファイルを処理するために、バックエンドでフロントエンドライブラリを実行することです。 V8 jsエンジンを使用することは可能ですhttps://github.com/cowboyd/therubyracer

しかし私は私のソリューションがユニークで最高のものであることを100%確信していません:)私はこのような方法で解決した同様の問題を抱えていました。

関連する問題