我有一个正常工作的代码 - 上传文件 ::
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
如何解决此问题?
答案 0 :(得分:3)
GET
没有/Details/8ce456dc55575888.jpg
路由。
如果您希望静态中间件处理这些请求,则需要正确配置它:
app.use('/Details', express.static(__dirname+'/public/images'));
这意味着请求:
/Details/8ce456dc55575888.jpg
将映射到:
{{__dirname}}/public/images/8ce456dc55575888.jpg
除了您正在使用的其他express.static
之外,您还可以使用它。