Image 如何将图像添加到Go中的特定文件夹中?获取错误,如:`%!(EXTRA*fs.PathError=open/photos:只读文件系统)`
我正在尝试将图像放入Golang的特定文件夹中。下面是代码。 这是我在根目录中创建名为Image 如何将图像添加到Go中的特定文件夹中?获取错误,如:`%!(EXTRA*fs.PathError=open/photos:只读文件系统)`,image,file,go,directory,Image,File,Go,Directory,我正在尝试将图像放入Golang的特定文件夹中。下面是代码。 这是我在根目录中创建名为photos的文件夹的函数 func createPhotoFolder(folderName string) { err := os.Mkdir(folderName, 777) if err != nil { fmt.Println("Error creating folder: ", err) return } fmt.P
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")
}
这是我发出get请求获取图像并尝试将它们放入我先前创建的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-如果文件夹名称是以这种方式写入的,则在不使用正斜杠的情况下创建(“照片”),我会收到如下错误消息
Can't put image into folder: %!(EXTRA *fs.PathError=open photos: is a directory)
Can't put image into folder: %!(EXTRA *fs.PathError=open /photos: read-only file system)
2-如果我像操作系统那样编写,那么创建(“/photos”)。我得到的错误如下
Can't put image into folder: %!(EXTRA *fs.PathError=open photos: is a directory)
Can't put image into folder: %!(EXTRA *fs.PathError=open /photos: read-only file system)
我在以chmod的方式创建photos
文件夹时授予了所有权限。
我确实尝试过使用io.Copy()
,但它需要一个文件参数,而在使用os.Create()创建文件时,我没有得到该参数
我应该如何创建文件夹并将图像正确地放入其中?下面是一个小程序,它完成了我认为您正在尝试的操作:
package main
import (
"net/http"
"os"
"path/filepath"
)
func downloadImages(links []string) error {
tmp := os.TempDir()
for _, link := range links {
println(link)
res, err := http.Get(link)
if err != nil { return err }
defer res.Body.Close()
file, err := os.Create(filepath.Join(tmp, filepath.Base(link)))
if err != nil { return err }
defer file.Close()
file.ReadFrom(res.Body)
}
return nil
}
func main() {
links := []string{
"http://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png",
"http://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico",
}
err := downloadImages(links)
if err != nil {
panic(err)
}
}
您需要修改它,因为您使用的是不同的目录,但它应该
开始吧
在您的代码中,在os.Create中,它应该包含要创建的文件的完整地址以及要创建的文件的名称。比如:
gopath := "C:/Users/<username>/go/src/photos/" //where photos is the folder you created
filename := "photo1.jpg"
out, err := os.Create(gopath + filename)
并将图像保存到您的系统中
out.Readfrom(resp.Body)
photos
是您创建的目录。您必须在它下面创建一个文件,比如os.create(“photos/filename”)
从正确使用Printf参数开始。如果你有麻烦,就去看兽医。