【问题标题】:How to send data from server to client via http?如何通过http从服务器向客户端发送数据?
【发布时间】:2013-01-02 20:50:12
【问题描述】:

我想将服务器上文件的文件路径发送到客户端,以便使用媒体播放器播放它。如何在客户端检索该字符串,以便在不使用套接字的情况下将其连接到 <video 元素的 src 属性中?

服务器sn-p:

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

【问题讨论】:

  • 如果您发送 ajax 请求,则以 xml 或 json 格式返回响应

标签: ajax node.js http rest express


【解决方案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");

所以你可能想发送文件名等。

您只需要从第一个代码 sn-p 更改 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 中

【讨论】:

    【解决方案2】:

    您使用的是哪个框架? 您可以在 ajax 中声明项目目录的基本路径,然后是您的文件。

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

    });

    【讨论】:

      【解决方案3】:

      由于您使用的是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>
      

      编辑:没有注意到您不想使用套接字。它仍然是一个可行的解决方案。

      【讨论】:

        猜你喜欢
        • 2020-12-27
        • 2019-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        相关资源
        最近更新 更多