|
@@ -8,6 +8,7 @@ import (
|
|
|
"fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
"net/http"
|
|
|
+ "net/url"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -426,10 +427,20 @@ func (this *UserController) ExportTemplateUsers() {
|
|
|
year, month, day := time.Now().Date()
|
|
|
yearStr := strconv.Itoa(year)[2:]
|
|
|
fileName := fmt.Sprintf("临时用户表%s.%d.%d.xlsx", yearStr, month, day)
|
|
|
- encodedFilename := encodeChineseFilename(fileName)
|
|
|
- this.Ctx.ResponseWriter.Header().Set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
|
|
- this.Ctx.ResponseWriter.Header().Set("Content-Disposition", encodedFilename)
|
|
|
- this.Ctx.ResponseWriter.Header().Set("File-Name", fileName)
|
|
|
+ // https://tools.ietf.org/html/rfc6266#section-4.3
|
|
|
+ fn := url.PathEscape(fileName)
|
|
|
+ if fileName == fn {
|
|
|
+ fn = "filename=" + fn
|
|
|
+ } else {
|
|
|
+ fn = "filename=" + fileName + "; filename*=utf-8''" + fn
|
|
|
+ }
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Content-Disposition", "attachment; "+fn)
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Content-Description", "File Transfer")
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Content-Type", "application/octet-stream")
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Content-Transfer-Encoding", "binary")
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Expires", "0")
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Cache-Control", "must-revalidate")
|
|
|
+ this.Ctx.ResponseWriter.Header().Set("Pragma", "public")
|
|
|
list := make([]models.TemplateUsersItem, 0)
|
|
|
for _, v := range userList {
|
|
|
list = append(list, v.ToItem())
|