我有一个函数NodeJS应用程序,它可以转换视频文件并将它们放在"转换"目录中。我正在使用express,http和 multer模块。我遇到的问题是下载完成的视频。如果我只是指向它,我不应该能够看到,在浏览器中加载完成的视频吗?
即当我输入以下内容时
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()
中间件告诉它为该目录提供服务。