我正在嘗試在 Go 中使用 http 模板來呈現(xiàn)列表中網(wǎng)頁上特定文件夾中的所有文件。每個文件或文件夾也應(yīng)該鏈接到它各自的路徑。我已經(jīng)閱讀了文件夾中的所有項(xiàng)目并將它們保存到這些結(jié)構(gòu)中type Item struct { Name string IsFolder bool Info os.FileInfo }// Items contains a slice of all items in a foldertype Items struct { Parent string Items []Item }然后將其傳遞給 template.ExecuteTemplate 函數(shù)。有問題的模板如下所示:<html><head> <title>website</title></head><body> <h1>Welcome to my website</h1> <p>Files in {{.Parent}}</p> <ul> <li><a href="ftp?f={{ .Parent }}">{{.Parent}}</a></li> {{range .Items}} {{if .IsFolder}} <li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{ .Name }}</a></li> {{else}} <li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{.Name}}</a></li> {{end}} {{end}} </ul></body></html>然而,我的問題是,在加載頁面時,唯一返回的是開始直到<li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{ .Name }}</a></li>它在 ?f= 之后立即停止,我之前只使用 {{ .Name }} 對其進(jìn)行了測試,并且效果非常好,當(dāng)然,除了鏈接不會去任何地方。在上面的列表位置渲染 {{ .Parent }} 絕對可以。如果我只是刪除 /,它也不起作用,這會產(chǎn)生完全相同的問題。當(dāng)然,我的問題是為什么會發(fā)生這種情況以及我將如何解決它。附言。你可能會注意到一個小的安全漏洞,如果你把 ../ 放在 ftp?f= 字段中,你會沿著文件樹往上走。是的,我知道這一點(diǎn),我會嘗試解決這個問題。如果您對如何解決該問題有任何建議,也可以告訴我:)
2 回答

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
在{{range .Items}}
匹配之后{{end}}
,模板運(yùn)行時將上下文設(shè)置為循環(huán)變量,即Item
. AnItem
沒有父母。您可以使用 $: use{{$.Parent}}
來訪問全局上下文。

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊
在您的循環(huán)內(nèi),.
是 current Item
,并且由于沒有Item.Parent
字段,因此.Parent
循環(huán)中沒有。
- 2 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消