登录
首页 >  Golang >  Go问答

无法向Go中的特定文件夹添加图像,遇到错误:`%!(EXTRA *fs.PathError=open /photos: 只读文件系统)`

来源:stackoverflow

时间:2024-03-17 22:36:31 236浏览 收藏

在 Go 语言中,当尝试向特定文件夹添加图像时,遇到了错误:“%!(EXTRA *fs.PathError=open /photos: 只读文件系统)”。这可能是由于在 os.create() 中未指定文件的完整地址,或未正确创建文件夹所致。为了解决此问题,需要提供要创建的文件的完整地址和名称,并使用 chmod 授予适当的权限。此外,可以直接从图像 URL 中提取文件名,并使用 io.Copy() 将图像保存到系统中。

问题内容

我正在尝试将图像放入 golang 中的特定文件夹中。这是下面的代码。 这是我在根目录中创建一个名为 photos 的文件夹的函数。

func createphotofolder(foldername string) {
    err := os.mkdir(foldername, 777)
    if err != nil {
        fmt.println("error creating folder: ", err)
        return
    }
    fmt.println(foldername, " created successfully in the root directory")
}

这是我发出请求来获取图像并尝试将它们放入我之前创建的 photos 文件夹中的函数。

func downloadimages(urls []string) {
    for i, url := range urls {
        resp, err := http.get(url)
        fmt.printf("%d inside for loop\n", i)
        if err != nil {
            log.fatal("error fetching image: ", err)
        }
        defer resp.body.close()
        out, err := os.create("photos")
        if err != nil {
            log.printf("can't put image into folder: ", err)
        }
        defer out.close()
    }
}

这是我运行程序时遇到的错误。

1-如果文件夹名称以这种方式写入 os.create("photos") 而不带正斜杠,我会收到如下错误消息。

can't put image into folder: %!(extra *fs.patherror=open photos: is a directory)

2-如果我像 os.create("/photos") 那样写。我收到如下错误。

Can't put image into folder: %!(EXTRA *fs.PathError=open /photos: read-only file system)

我在以chmod的方式创建photos文件夹时授予了所有权限。 我确实尝试使用 io.copy() 但它需要一个文件参数,而在使用 os.create() 创建一个文件参数时我没有得到该参数

我应该如何创建文件夹并将图像正确放入其中?


正确答案


在这里,在您的代码中,在 os.create 中,它应该具有要创建的文件的完整地址以及要创建的文件的名称。喜欢:

gopath := "c:/users//go/src/photos/" //where photos is the folder you created 
filename := "photo1.jpg"

out, err := os.create(gopath + filename)

此外,正如 @steven-penny 在他的回答中给出的那样,直接从 url 中的图像名称创建一个文件名。这样您就不必为下载的每个图像提供文件名。

out, err := os.create(gopath + filepath.base(link))

并将图像保存到您的系统中,

out.Readfrom(resp.Body)

终于介绍完啦!小伙伴们,这篇关于《无法向Go中的特定文件夹添加图像,遇到错误:`%!(EXTRA *fs.PathError=open /photos: 只读文件系统)`》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>