从本地 NodeJS 服务器下载视频文件



我有一个函数NodeJS应用程序,它可以转换视频文件并将它们放在"转换"目录中。我正在使用express,httpmulter模块。我遇到的问题是下载完成的视频。如果我只是指向它,我不应该能够看到,在浏览器中加载完成的视频吗?

即当我输入以下内容时

http://localhost:8080/converted/converted.avi

我得到

无法获取/转换/转换.avi

我的节点应用程序的完整标头部分是

var express = require('express');
var app = express();
    var multer  = require('multer'),
           fs = require('fs'),
       ffmpeg =  require('./lib/fluent-ffmpeg');
    var server = require('http').createServer(app);
    var io = require('socket.io').listen(server,{transports:['flashsocket', 'websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']});
    var port = Number(8080);
    server.listen(port);
    app.use(multer({ dest: './uploads/'}));

可能无关紧要,因为还有其他问题在起作用,但这是我用于Adobe AIR客户端进行实际下载的实际代码
(参考资料 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html)

 _urlLoader = new URLLoader();
                _urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
                _urlLoader.addEventListener(Event.COMPLETE,
                    function(e:Event):void
                    {
                        var air:File = File.desktopDirectory.resolvePath("converted.mp4");
                        //var file:File = File.desktopDirectory.resolvePath("AIR Test");
                        var fs:FileStream = new FileStream();
                        fs.open(air, FileMode.WRITE);
                        fs.writeBytes(_urlLoader.data);
                        fs.close();
                        air.downloaded = true;
                    });

使用以下简单的快速设置来提供静态目录应该可以工作,但是

var express = require('express');
var app = express();
console.log('static and __dirname = '+__dirname)
app.use(express.static(__dirname+'/public'));
app.listen(process.env.PORT || 3000);

当我删除一个简单的索引时.html在服务器公用文件夹中,我仍然只在浏览器中得到以下内容......

无法获取/public/index.html

Node.js Web 服务器不提供目录,除非您明确告诉它们这样做。

如果您使用的是 Express,请使用 static() 中间件告诉它为该目录提供服务。

相关内容

  • 没有找到相关文章

最新更新