无法在浏览器上查看上传的文件

时间:2013-12-04 09:33:21

标签: node.js express

我有一个正常工作的代码 - 上传文件 ::

var express=require('express');
var mysql=require('mysql');
var fs=require('fs');
var http=require('http');
var crypto=require('crypto');

var app=express();

var connection=mysql.createConnection({
    host:'localhost',
    user:'****',
    password:'****',
    database:'posting_only_image_DB'
});

connection.connect();

app.set('port',process.env.PORT||1234);

app.use(express.static(__dirname+'/public/images'));

app.use(express.bodyParser());

app.post('/Details/',function(req,res,next){

    var file_name=req.files.key.originalFilename;
    console.log(file_name);

    crypto.randomBytes(8, function(ex, buf) {

        var array     = req.files.key.originalFilename.split('.');
        var type      = array[array.length - 1];
        var name      = buf.toString('hex') + '.' + type;

        fs.rename(req.files.key.path, './public/images/' + name, function(e) {
            next(e, name);
        });
    });
});

http.createServer(app).listen(app.get('port'),function(){
    console.log('Express server listening on port'+app.get('port'));
});

我在上传文件 ::

时发出如下请求

但我的查询有效,我可以在位置/public/images ....的服务器磁盘中看到具有唯一ID的文件,文件名为:: 8ce456dc55575888.jpg


现在说我是否要测试它,我想查看上传的文件 ::我在下面为浏览器添加了一个Url请求

http://-----URL----/Details/8ce456dc55575888.jpg

我在浏览器上收到错误 ::

Cannot GET /Details/8ce456dc55575888.jpg

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

GET没有/Details/8ce456dc55575888.jpg路由。

如果您希望静态中间件处理这些请求,则需要正确配置它:

app.use('/Details', express.static(__dirname+'/public/images'));

这意味着请求:

/Details/8ce456dc55575888.jpg

将映射到:

{{__dirname}}/public/images/8ce456dc55575888.jpg

除了您正在使用的其他express.static之外,您还可以使用它。