我將圖像作為 png 文件存儲在本地服務器上,并且僅將文件名保存到數據庫中。當向客戶端渲染圖像時,我將圖像的相對路徑與數據庫中的文件名結合起來,如下所示:<img src='../../public/avatar-pictures/3fVZNShyQRAtBbipvzVrDwDD.png'/>但這不起作用。作為絕望中的最后一次嘗試,我什至將 png 文件本身移動到客戶端腳本的根目錄,但它仍然沒有產生任何結果。是什么導致了這個問題?
1 回答

牧羊人nacy
TA貢獻1862條經驗 獲得超7個贊
默認情況下,node.js 和 Express 不提供任何文件。因此,您不能為瀏覽器提供服務器硬盤上某個位置的路徑并期望 Web 服務器發送文件。它并沒有這樣做(與熟悉 Apache 的人可能期望的不同)。
您的服務器上需要有一條指向公共目錄的路由。有多種方法可以做到這一點,但這是一種:
<img src='/public/avatar-pictures/3fVZNShyQRAtBbipvzVrDwDD.png'/>
然后,在您的服務器上,您將使用express.static()
中間件創建一個路由,該路由查找以以下開頭的 URL /public
,并將提供硬盤驅動器上與 URL 路徑匹配的公共目錄中的文件:
app.use("/public", express.static("../../public"));
您傳遞到的路徑express.static()
需要指向本地硬盤上的公共目錄。您沒有透露您的本地文件結構,因此我無法確切地告訴您它應該是什么。上面的示例將相對于程序啟動時的當前工作目錄。從模塊目錄中自己構建路徑可能更常見。因此,如果該public
目錄比模塊目錄高兩級,您可以這樣做:
app.use("/public", express.static(path.join(__dirname, "../../public")));
然后,它會更具體地與模塊的目錄相關,而不依賴于當前工作目錄,當前工作目錄可以通過代碼或程序的啟動方式進行更改。
當然,您也可以使用完全限定路徑:
app.use("/public", express.static(path.join("/someVol/users/me/myProject/public")));
請記住,express.static()
中間件會打開您指向的整個目錄樹以供公共訪問,因此您必須絕對確保其中只有公共內容。默認情況下,express.static()
不允許..
進入路徑,因此請求無法離開您指定的目錄。
- 1 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消