- 1.用http写一个提供本地文件下载的接口
- 2.测试可以下载文件,原文件名是 file.docx,但下载后的文件名是response.html
- 3.代码中有尝试对Header进行设置,但是均无效果
- 4.希望大佬解答
func DownloadFile(fileFullPath string, rw http.ResponseWriter) error {
file, err := os.Open(fileFullPath)
if err != nil {
return err
}
defer file.Close()
fileName := path.Base(fileFullPath)
//fileName = url.QueryEscape(fileName) // 防止中文乱码
fileName = fileName[strings.LastIndex(fileName, string(filepath.Separator))+1:]
//rw.Header().Add("Content-Type", "multipart/form-data")
//rw.Header().Add("Content-Disposition:", "attachment; filename=\""+fileName+"\"")
rw.Header().Set("Content-Type", "application/octet-stream")
rw.Header().Set("content-Disposition", fmt.Sprintf("attachment;filename=%s", fileName))
//rw.Header().Add("Content-Transfer-Encoding", "binary")
//rw.Header().Add("Expires", "0")
//rw.Header().Add("Cache-Control", "must-revalidate")
//rw.Header().Add("Pragma", "public")
_, error := io.Copy(rw, file)
if error != nil {
return err
}
return nil
}
将你的Request也请求进来,使用内置方法: