作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我尝试将以下功能简化为仅将单个文件添加到 .zip 存档。
无论我尝试什么,生成的 .zip 文件中都没有列出任何文件。存档的大小是正确的。但是当我尝试提取所有 (windows) 时,存档是空的。
go版本go1.10.1 windows/amd64
func Zip(src string, dst string) error {
destinationFile, err := os.Create(dst)
if err != nil {
return err
}
myZip := zip.NewWriter(destinationFile)
file := `C:\MA\testing\cldeploy-local.json`
zipFile, err := myZip.Create(file)
fsFile, err := os.Open(file)
if err != nil {
return err
}
_, err = io.Copy(zipFile, fsFile)
if err != nil {
return err
}
return nil
if err != nil {
return err
}
err = myZip.Close()
if err != nil {
return err
}
return nil
}
当我提取文件时出现一条错误消息:压缩的(zipped)文件夹...无效。
最佳答案
正如@JimB 的回答:文件需要添加为相对路径只有正斜杠。不能以斜杠开头
func Zip(src string, dst string) error {
destinationFile, err := os.Create(dst)
if err != nil {
return err
}
myZip := zip.NewWriter(destinationFile)
file := `C:\MA\testing\cldeploy-local.json`
// file needs to be added as relative path
// only forward slashes. can not start with slash
relPath := strings.TrimPrefix(file, filepath.Dir(src))
relPath = strings.Replace(relPath, `\`, `/`, -1)
relPath = strings.TrimLeft(relPath, `/`)
zipFile, err := myZip.Create(relPath)
fsFile, err := os.Open(file)
if err != nil {
return err
}
_, err = io.Copy(zipFile, fsFile)
if err != nil {
return err
}
return nil
if err != nil {
return err
}
err = myZip.Close()
if err != nil {
return err
}
return nil
}
关于GO zip.NewWriter() 创建空的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525639/
我尝试将以下功能简化为仅将单个文件添加到 .zip 存档。 无论我尝试什么,生成的 .zip 文件中都没有列出任何文件。存档的大小是正确的。但是当我尝试提取所有 (windows) 时,存档是空的。
package main import ( "fmt" "mime/multipart" "bytes" ) var channel chan string = make(ch
我是一名优秀的程序员,十分优秀!