href.xespng
由于存在文件较大的情况,所以没有写用流的方式传递给前端。
download
<a>标签的 dowanload 属性只有在同源情况下在能用,且目前只支持 火狐浏览器和谷歌浏览器
// 请将href中的地址改为文件地址,下载下来的文件名称为 ceshi
<a href="www.baidu.com" download="ceshi">
复制代码Iris框架的 ctx.SendFile()方法
iris框架中有封装方法 ctx.SendFile()方法可以将文件的内容返还给前端。(ps:如果文件特别大的话,内容很多感觉还是不方便)
SendFile(filename string, destinationName string) error
复制代码两个参数,filename是目标文件路径,destinationName 是赋予文件名
/* 文件目录为
— files
—— first.xml
—— main.go
*/
package main
import (
"github.com/kataras/iris"
)
func main() {
app := iris.New()
app.Get("/", func(ctx iris.Context) {
file := "./files/first.xml"
ctx.SendFile(file, "c.xml")
})
app.Run(iris.Addr(":8080"))
}
复制代码压缩指定文件
.zip.zip
/* 压缩文件为zip格式
* filePath 为需要压缩的文件路径,zipPath为压缩后文件路径
*/
func FileToZip(filePath string,zipPath string) error {
f,err := os.Open(filePath)
if err !=nil{
return err
}
defer f.Close()
z,err := os.Create(zipPath)
if err !=nil{
return err
}
defer z.Close()
wr := zip.NewWriter(z)
// 因为filePath是一个路径,所以会创建路径中的所有文件夹
w,err := wr.Create(filePath)
if err != nil{
return err
}
_,err = io.Copy(w,f)
if err != nil{
return err
}
return nil
}
复制代码以上三种方法是经过百度和自己理解总结的方法,如有不对请大佬指正,如果有其他更好的方法请赐教 :)