1
我有一個圖像存儲在服務器端。無論何時客戶端連接到服務器,它都會通過套接字發送圖像。收到的圖像我能夠在畫布上顯示它,但是我無法將收到的圖像保存在本地磁盤中。我試圖使用fs.writeFile(),但也許我沒有發送正確的參數。導致此問題的任何情況都將有所幫助。謝謝。 [我想實現這個作爲基本的通信客戶端服務器]。無法保存在客戶端的JPEG圖像
要優化它,有什麼辦法可以以更快的方式實現相同的操作?任何工作代碼也會有幫助。
//server side js code
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs'); // required for file serving
http.listen(6969, function(){
console.log('listening on port 6969');
});
// trying to serve the image file from the server
io.on('connection', function(socket){
start = new Date().getTime();
console.log(start);
console.log('a user connected');
fs.readFile(__dirname + '/image.jpg', function(err, buf){
socket.emit('image', { image: true, buffer: buf.toString('base64') });
console.log('image file is transmitted');
});
});
<script>
var socket = io("http://139.25.100.101:6969");
var ctx = document.getElementById('canvas_win').getContext('2d');
var fs = require('fs');
socket.on("image", function(info) {
if (info.image) {
var img = new Image();
img.src = 'data:image/jpeg;base64,' + info.buffer;
ctx.drawImage(img, 0, 0);
\t var end = new Date().getTime();
\t document.getElementById("demo").innerHTML = end;
\t fs.writeFile('logo.jpeg', img.src, 'data:image/jpeg;base64,', function(err){
if (err) throw err
console.log('File saved.')
\t
})
}
});
nodejs和瀏覽器javascript有不同的apis。 (例如:'document','fs',...) –