前提・実現したいこと
与えられた項目(headline)に従い写真を取り画像を各項目ごとに取得するrailsのアプリを作成中です。
webRTCで撮影された画像をcanvasに渡してtoDataUrlメソッドで文字列としてサーバー側に格納しています。
有料スクールのメンターによると、データベース(mysql2)に画像データをそのまま保管するのは良くないと
伺い、createObjectURL()等を使いローカルPCに画像データを格納する予定ですが、バイナリ(blob)
今のコードに当てはめてみようとしたところで躓きました。
発生している問題
blobpicカラム(blob型)に格納するはずのblobが入っていない。
該当のソースコード
javascript
1(省略) 2$('#save-button').click(function(){ 3 var canvas = document.getElementById('canvas'); 4 // var img = document.getElementById('img'); 5 // var ctx = canvas.getContext('2d'); 6 var url = canvas.toDataURL('image/jpeg'); 7 // base64データをblobに変換 8 var blob = Base64toBlob(url); 9 alert(blob.size) 10 // hdle_id = "10" 11 // alert(url.length); 12 $("#picture_image_url").val(""); 13 $("#picture_image_url").val(url); 14 $("#picture_blobpic").val(""); 15 $("#picture_blobpic").val(blob); 16 $("#new_picture").submit();
html.erb
1<body> 2 <h2>Video</h2> 3 <video id="camera" autoplay></video> 4 <button id="start">start</button> 5 <h2>写真(canvas)</h2> 6 <canvas id="canvas"></canvas> 7 <!--<h2>Img</h2>--> 8 <!--<img id="img">--> 9 <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>--> 10 <!--<script type="text/javascript" src="./script.js"></script>--> 11 12 <%= form_for(@picture, url: headline_pictures_path) do |f| %> 13 <%= f.hidden_field :headline_id, :value => @headline %><br> 14 <%= f.hidden_field :image_url, :value => "" %> 15 <%= f.hidden_field :blobpic, :value => "" %> 16 <!--<%= f.submit %>--> 17 <% end %> 18 <button id="save-button">保存</button> 19</body>
view
1<body> 2 <h2>Video</h2> 3 <video id="camera" autoplay></video> 4 <button id="start">start</button> 5 <h2>写真(canvas)</h2> 6 <canvas id="canvas"></canvas> 7 <!--<h2>Img</h2>--> 8 <!--<img id="img">--> 9 <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>--> 10 <!--<script type="text/javascript" src="./script.js"></script>--> 11 12 <%= form_for(@picture, url: headline_pictures_path) do |f| %> 13 <%= f.hidden_field :headline_id, :value => @headline %><br> 14 <%= f.hidden_field :image_url, :value => "" %> 15 <%= f.hidden_field :blobpic, :value => "" %> 16 <!--<%= f.submit %>--> 17 <% end %> 18 <button id="save-button">保存</button> 19</body>
試したこと
$("#picture_blobpic").val(blob);
をval(blob.size)やval(blob.type)に変えて変数blobまでは正常に得られていることを確認
javascriptのBLOBリファレンスをみてsizeとtype以外にプロパティがないのでblob.valueとかが効かないことを確認
$("#picture_blobpic").val()を.data()メソッドに変えてみても駄目
blobpicカラムのデータ型をtext型にする>[BLOB:OBJECT]とtextが入る=>変数blobがblobオブジェクトであることは確認できる
####何かアドバイスありましたらお願いします。
補足情報(FW/ツールのバージョンなど)
ruby: 2.3.1 p122
rails: 4.2.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。