我有一个功能NodeJS应用程序,它可以转换视频文件并将它们放入“转换后的”文件中。目录。我正在使用 express , http 和 multer 模块。我遇到的问题是下载完成的视频。如果我只是指向它,我是不是能够看到,在浏览器中加载完成的视频?
即我输入以下内容
http://localhost:8080/converted/converted.avi
我得到了
无法获得/converted/converted.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;
});
使用以下简单的express设置来提供静态目录应该可以工作但
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);
当我在服务器公用文件夹中删除一个简单的index.html时,我仍然只能在浏览器中获得以下内容......
无法获取/public/index.html
答案 0 :(得分:2)
如果您使用的是Express,请使用static()
middleware告诉它提供该目录。