Thanks Ian.

changing it to 

*http.Handle("/static/", http.FileServer(http.FS(fs.Sub(static,"files"))))*

did work.
On Tuesday, 24 January 2023 at 01:52:40 UTC+5:30 Ian Lance Taylor wrote:

> On Mon, Jan 23, 2023 at 11:51 AM Shammi Shailaj <shammi...@gmail.com> 
> wrote:
> >
> > There is no function named Sub() for the variable static of type 
> embed.FS. Hence, the handler: http.Handle("/static/", 
> http.FileServer(http.FS(static. Sub("files")))) shall not work and throw an 
> error like:
> >
> > static.Sub undefined (type embed.FS has no field or method Sub)
> >
> > Can anyone provide a solution to this? I am looking for the same
>
> Where it says static.Sub it should probably say fs.Sub(static, "files").
>
> Ian
>
>
> > On Tuesday, 6 July 2021 at 01:26:28 UTC+5:30 Sean Liao wrote:
> >>
> >> `embed` embeds the files with the path you specified, so if you look 
> into your `static` variable, the files will be available as 
> `files/static/yourfile`.
> >> This means there won't be issues with filename collisions etc... if you 
> specify multiple patterns
> >>
> >> If you want to serve your files in your `files/static` directory under 
> the `/static/` url, your handler should be : `http.Handle("/static/", 
> http.FileServer(http.FS(static.Sub("files"))))`
> >> That is, for everything under the `/static` url, serve from the 
> embedded filesystem, skipping over the `files/` prefix in the embedded fs.
> >>
> >> On Monday, July 5, 2021 at 8:30:37 PM UTC+2 Amnon wrote:
> >>>
> >>> What does
> >>>
> >>> go list -f '{{ .EmbedFiles }}'
> >>>
> >>> display?
> >>>
> >>> On Monday, 5 July 2021 at 06:28:54 UTC+1 tjgur...@gmail.com wrote:
> >>>>
> >>>> Hi there,
> >>>>
> >>>> I have been testing the (relatively) new go:embed feature for a few 
> days and I came across this situation which I wasn't quite sure what was 
> causing it so I thought asking here would help.
> >>>>
> >>>> Consider the following code:
> >>>>
> >>>> ```golang
> >>>> package main
> >>>>
> >>>> import (
> >>>> "embed"
> >>>> "fmt"
> >>>> "log"
> >>>> "net/http"
> >>>> )
> >>>>
> >>>> //go:embed files/static
> >>>> var static embed.FS
> >>>>
> >>>> func main() {
> >>>> http.Handle("/static/", http.StripPrefix("/static/", 
> http.FileServer(http.FS(static))))
> >>>> log.Fatal(http.ListenAndServe(":8000", nil))
> >>>> }
> >>>>
> >>>> ```
> >>>>
> >>>> Now the files in directory files/static are very much accessible but 
> the issue I seem to have is that it was accessible under the url 
> /static/files/static/filename instead of just being accessible through 
> /static/filename where filename exists inside the directory files/static/
> >>>>
> >>>> I tried looking up some examples online and it seems that I have to 
> use the fs.FS and fs.Sub and only expose (not sure if this is correct 
> terminology) the new fs.Sub which would mitigate the issue I was having.
> >>>>
> >>>> My question is about the reason why the Go team went with this 
> implementation? Because in the above program I wasn't able to access the 
> files in files/ directory even though there were files in it and was only 
> able to access files inside the files/static files directory. So there 
> doesn't seem to be a point in this implementation unless I'm missing 
> something, and I'm sure its the latter case haha. If anyone knows about why 
> they went with this implementation, I would be very grateful.
> >>>>
> >>>> Best wishes
> >>>> Taj
> >>>>
> >>>>
> > --
> > You received this message because you are subscribed to the Google 
> Groups "golang-nuts" group.
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to golang-nuts...@googlegroups.com.
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/ce27a16e-b4dc-46b2-8911-4c70f483c20bn%40googlegroups.com
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/18a4807a-f7f8-4a86-903e-81d26d8b0c28n%40googlegroups.com.

Reply via email to