我想將我服務器上文件的文件路徑發送到客戶端,以便使用媒體播放器播放它。如何在客戶端檢索該字符串,以便在不使用套接字的情況下將它連接到<video
元素的src
屬性中?如何通過http將數據從服務器發送到客戶端?
服務器片斷:
res.set('content-type', 'text/plain');
res.send('/files/download.mp4');
我想將我服務器上文件的文件路徑發送到客戶端,以便使用媒體播放器播放它。如何在客戶端檢索該字符串,以便在不使用套接字的情況下將它連接到<video
元素的src
屬性中?如何通過http將數據從服務器發送到客戶端?
服務器片斷:
res.set('content-type', 'text/plain');
res.send('/files/download.mp4');
這是如何在沒有任何框架的情況下向服務器提出請求。 「/ 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
哪個框架您使用的? 您可以在ajax中聲明項目目錄的基本路徑,然後在文件後面聲明它。
jQuery.ajax({
type: "GET",
url: "/files/download.mp4",
});
由於使用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>
編輯:沒有注意到你沒有想使用套接字。它仍然是一個可行的解決方案。
如果您發送ajax請求,然後返回xml或json響應 –