Przeglądaj źródła

Fix content-disposition for pdf download

Andrea Fazzi 5 lat temu
rodzic
commit
012bc0d768
2 zmienionych plików z 7 dodań i 3 usunięć
  1. 2 1
      orm/file.go
  2. 5 2
      renderer/renderer.go

+ 2 - 1
orm/file.go

@@ -3,6 +3,7 @@ package orm
 import (
 	"fmt"
 	"net/http"
+	"path/filepath"
 
 	"github.com/jinzhu/gorm"
 )
@@ -15,7 +16,7 @@ type File struct {
 	JobID uint
 }
 
-func (f *File) String() string { return f.Path }
+func (f *File) String() string { return filepath.Base(f.Path) }
 
 func (f *File) Create(args map[string]string, r *http.Request) (interface{}, error) {
 	return nil, fmt.Errorf("Not implemented")

+ 5 - 2
renderer/renderer.go

@@ -163,10 +163,13 @@ func NewPDFRenderer() (*PDFRenderer, error) {
 }
 
 func (rend *PDFRenderer) Render(w http.ResponseWriter, r *http.Request, data interface{}, options ...url.Values) error {
-	w.Header().Set("Content-Type", "application/pdf")
 	fileInfo := data.(map[string]string)
+	filename := fileInfo["filename"]
+
+	w.Header().Set("Content-Type", "application/pdf")
+	w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filepath.Base(filename)))
 
-	f, err := os.Open(fileInfo["filename"])
+	f, err := os.Open(filename)
 	if err != nil {
 		panic(err)
 	}