在我的應用程序,用戶可以將圖像上傳到服務器,我把上傳的文件夾上傳這樣如何在node.js中提供靜態文件?
公共
上傳
但是當我服務於
<img src='upload/image.jpg'/>
有一個404錯誤。
我用快遞和使用
app.use(express.static(__dirname + '/public'));
它意味着我必須把公共文件夾所有上傳的,如果有什麼的硬盤驅動器無法容納這麼多的圖像,不能我把其餘的服務器放在另一臺服務器上?
在我的應用程序,用戶可以將圖像上傳到服務器,我把上傳的文件夾上傳這樣如何在node.js中提供靜態文件?
公共
上傳
但是當我服務於
<img src='upload/image.jpg'/>
有一個404錯誤。
我用快遞和使用
app.use(express.static(__dirname + '/public'));
它意味着我必須把公共文件夾所有上傳的,如果有什麼的硬盤驅動器無法容納這麼多的圖像,不能我把其餘的服務器放在另一臺服務器上?
你可以把圖像./public/upload
嘗試使用這樣的:
<img src='/upload/image.jpg'/>
注意斜線上傳前。這可能是問題不在於你保存文件的位置,而是你如何引用它們。如果帶有img
標記的頁面不在您的根目錄中,則相對網址upload/image.jpg
將不起作用。您需要使用/upload/image.jpg
。
如果
app.use(express.static(__dirname + '/public'));
和./public
包含:
/img.png
/img2.png
/logo.png
yourapp.com/img.png
將img.png。
如果你想yourapp.com/img.png
是404和yourapp.com/public/img.png
是img.png,則需要更換
app.use(express.static(__dirname + '/public'));
與
app.use("/public",express.static(__dirname + '/public'));
不,你不必把所有上傳文件到公用文件夾。
Express允許配置多箇中間件,因此您可以添加一箇中間件來提供所需目錄中的靜態內容。
如果你想要在Url路徑中指定目錄,那麼你可以使用像這樣的目錄安裝功能!
app.use('/upload',express.static(__dirname + '/upload'));
Ofcouse你可以使用其他服務器來存儲上傳的文件,你可以通過代理方式要求它檢索這些文件。
app.get('/upload/:fileName',function(req,res) {
var options = {
port: 80,
method : 'GET',
hostname : "localhost",
path : "/upload/" + req.params.fileName
};
var req = http.request(options,function(response) {
response.pipe(res);
});
req.on('error',function(err) {
res.statusCode = 404;
res.end("Error : file not found");
});
req.end();
});
此代碼將工作不僅在上傳的文件都存儲在原來的服務器,而且如果你有文件的一些其他服務器上太!