我想将服务器上文件的文件路径发送到客户端,以便使用媒体播放器播放它。如何在客户端检索该字符串以便在不使用套接字的情况下将其连接到元素的src
属性中?<video
服务器片段:
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
要获取服务器上的参数,如果您使用的是 express,它们位于 req.body.param_name
你用的是哪个框架??您可以在 ajax 中声明项目目录的基本路径,然后是您的文件。
jQuery.ajax({
type: "GET",
url: "/files/download.mp4",
});
由于您使用的是express
(on 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>
编辑:没有注意到你不想使用套接字。它仍然是一个可行的解决方案。