こんにちは。
タイトル通りの質問です。
画像を送ることは可能でしょうか?
文字や信号は送れるのですが、画像データはどのようにすれば良いのかと‥‥
よろしくお願いいたします。
追記:
回答者様のアドバイスから、base64に変換して送信するということがわかったので、inputのfileタイプでアップロードした画像をsocketで送るというのをやってみたのですが(以下のコード)、base64に変換してからsocketで送信することは出来ているものの、受信側でエラー([object%20Object] 404 (Not Found))
なるものが出て、画像になりません。どこが間違っているのでしょうか?よろしくお願いいたします
javascript
1//app.js 2var express = require('express'), 3 app = express(), 4 server = require('http').Server(app), 5 io = require('socket.io').listen(server), 6 ejs = require('ejs'); 7 8 9app.set('views',__dirname+'/views'); 10app.set('view engine', 'ejs'); 11 12app.use('/public',express.static(__dirname+'/public')); 13 14app.get('/',function(req,res){ 15 res.render('index'); 16}) 17 18app.get('/index2',function(req,res){ 19 res.render('index2'); 20}) 21 22 23server.listen(3000); 24console.log('now comming...'); 25 26 27io.sockets.on('connection',function(socket){ 28 //画像をindex1からindex2へと渡す 29 socket.on('send_img',function(data){ 30 console.log(data); 31 io.sockets.emit('send_img',data); 32 }); 33 34})
html
1//index1 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5<meta charset="UTF-8"> 6<title>index</title> 7</head> 8<body> 9 <h1>画像を送る側</h1> 10 <input type="file" accept="image/*" id="image"> 11 <button id="send">send</button> 12<script src="//code.jquery.com/jquery-1.12.0.min.js"></script> 13<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 14 15<script> 16$(function(){ 17 //socket接続 18 var socket = io.connect(); 19 20 //画像プレビュー 21 var image = $('#image').on('change',function(){ 22 var fileList = $(this).prop('files'); 23 var reader = new FileReader(); 24 reader.readAsDataURL(fileList[0]); 25 26 reader.onload = function(){ 27 $('<img width="200" class="preview">').attr('src',reader.result).appendTo('body'); 28 } 29 }) 30 31//sendボタンを押して、index2へと画像送信 32 $('#send').on('click',function(){ 33 var src = $('.preview').attr('src'); 34 socket.emit('send_img',{ 35 data: src 36 }); 37 }); 38 39}) 40</script> 41</body> 42</html>
html
1//index2 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5<meta charset="UTF-8"> 6<title>index2</title> 7</head> 8<body> 9 <h1>ここに画像が流れてくるよ</h1> 10 <div id="come_image"></div> 11<script src="//code.jquery.com/jquery-1.12.0.min.js"></script> 12<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 13<script> 14$(function(){ 15 //socket接続 16 var socket = io.connect(); 17 18 socket.on('send_img',function(data){ 19 console.log(data); //これは出てきました 20 $('<img width="200">').attr('src',data).appendTo('#come_image');//これが画像にならない 21 }) 22}) 23</script> 24</body> 25</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/09 09:53
2016/02/09 11:52
2016/02/12 02:51