2013-01-02 89 views
0

我想將我服務器上文件的文件路徑發送到客戶端,以便使用媒體播放器播放它。如何在客戶端檢索該字符串,以便在不使用套接字的情況下將它連接到<video元素的src屬性中?如何通過http將數據從服務器發送到客戶端?

服務器片斷:

res.set('content-type', 'text/plain'); 
res.send('/files/download.mp4'); 
+1

如果您發送ajax請求,然後返回xml或json響應 –

回答

1

這是如何在沒有任何框架的情況下向服務器提出請求。 「/ path_to_page」是您設置到應該處理請求的頁面的路由。

var xhr = new XMLHttpRequest(); 
xhr.open('GET', '/path_to_page', true); 
xhr.onload = function(e) { 
if (this.status == 200) { 
    console.log(this.responseText); // output will be "/files/download.mp4" 
} 
}; 

xhr.send(); 
} 

您可能還想發送一些參數。

var formdata = new FormData(); 
formdata.append("param_name", "value"); 

所以,你可能想要發送文件名等。

您只需要從第一個代碼段中更改2行。其中之一是

xhr.open('POST', '/path_to_page', true); // set to post to send the params 

xhr.send(formdata); // send the params 

要獲得PARAMS在服務器上,如果使用的是快遞,他們在req.body.param_name

0

哪個框架您使用的? 您可以在ajax中聲明項目目錄的基本路徑,然後在文件後面聲明它。

jQuery.ajax({ 
type: "GET", 
url: "/files/download.mp4", 

});

0

由於使用express(上node),你可以使用socket.io

服務器:

var io = require('socket.io').listen(80), 
    fs = require('fs'); 

io.sockets.on('connection', function (socket) { 
    socket.on('download', function(req) { 
     fs.readFile(req.path, function (err, data) { 
     if (err) throw err; 

     socket.emit('video', { video: data }); 
     }); 
    }); 
}); 

客戶:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 

    ...  
    // request a download 
    socket.emit('download', { path: '/files/download.mp4' }); 

    // receive a download 
    socket.on('video', function (data) { 
    // do sth with data.video; 
    }); 
    ... 
</script> 

編輯:沒有注意到你沒有想使用套接字。它仍然是一個可行的解決方案。

相關問題