在我的 webapp 中,我讓用戶能夠上傳照片。當該照片上傳到我的服務器時,我想動態創建一條路線,他們可以單擊該路線并查看該影像。我不知道從哪里開始研究這個,我發現的幾篇文章似乎沒有回答我的問題。如何在 node.js 中動態創建新路由?
uj5u.com熱心網友回復:
通常,一旦你已經初始化了服務器,你就不會在 Express 中創建新的路由。相反,您在開始時創建一個帶有某種引數的單一路由。該引數可以是 URL 的一部分,也可以是查詢字串的一部分。然后,您有一個預定義的路由來處理帶有引數的 URL。該引數因每個請求而異,并且單個路由中的代碼使用該引數來決定要發送哪些內容。
因此,對于您的照片上傳,您將接受上傳,然后為該影像分配某種唯一的 imageID。然后,該 imageID 將放入 URL 以提供該特定影像。如果剛剛上傳的影像的 imageID 是 123456789,那么它可能如下所示:
// incoming URL path /image/xxxxxx
// where xxxxxx is the imageID
app.get("/image/:imageID", (req, res) => {
let imageID = req.params.imageID;
// in your server file system, find the image for imageID and build a path to it
let imagePath = findImageID(imageID);
if (imagePath) {
res.sendFile(imagePath);
} else {
res.sendStatus(404);
}
});
imageID 只需要是您可以查找并轉換為實際影像檔案路徑的東西。這真的取決于你如何做到這一點。它可以是影像的實際檔案名。它可以是您在存盤影像路徑的資料庫中查找的 ID。或者,您可以發明一些其他方案。只需要一種在上傳影像時創建 imageID 的方法,以及一種findImageID(imageID)為您提供從 imageID 到影像的路徑的實作方法。
對于像影像這樣的固定資源,我更喜歡上面的方案,其中 imageID 是路徑的一部分,因為它確實是 URL 資源規范的一部分。但是,從技術上講,它也可以使用查詢字串來完成:
// image?id=xxxxxxx
// where xxxxxx is the imageID
app.get("/image", (req, res) => {
let imageID = req.query.id;
// in your server file system, find the image for imageID and build a path to it
let imagePath = findImageID(imageID);
if (imagePath) {
res.sendFile(imagePath);
} else {
res.sendStatus(404);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447612.html
上一篇:嘗試檢索JSON資料會導致[Promise{<pending>},Promise{<pending>}]
下一篇:陣列沒有傳遞給mongo
