From 6ea75f2e7df5a7850bac311d085583135a6a9e82 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 18 Sep 2024 13:53:53 +0200 Subject: [PATCH] OZG-6514 Umstellung File Download Response --- internal/server/handler.go | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/internal/server/handler.go b/internal/server/handler.go index ba57535..7b024d5 100644 --- a/internal/server/handler.go +++ b/internal/server/handler.go @@ -36,16 +36,13 @@ import ( "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/status" "io" - "mime/multipart" "net/http" ) const ( - fileIdParam = "id" - samlTokenParam = "samlToken" - fileFormKey = "file" - contentTypeHeaderKey = "Content-Type" - contentDispositionHeaderKey = "Content-Disposition" + fileIdParam = "id" + samlTokenParam = "samlToken" + contentTypeHeaderKey = "Content-Type" ) func RegisterHomeEndpoint(mux *runtime.ServeMux) { @@ -94,7 +91,10 @@ func getFileHandler(w http.ResponseWriter, r *http.Request, vars map[string]stri return } - err = writeMultipartResponse(w, fileBuffer) + w.Header().Set(contentTypeHeaderKey, "application/octet-stream") + w.WriteHeader(http.StatusOK) + + _, err = fileBuffer.WriteTo(w) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } @@ -135,30 +135,6 @@ func fetchFileFromGrpc(ctx context.Context, fileId string, samlToken string, grp return &fileBuffer, nil } -func writeMultipartResponse(w http.ResponseWriter, fileBuffer *bytes.Buffer) error { - w.Header().Set(contentTypeHeaderKey, "multipart/form-data") - w.Header().Set(contentDispositionHeaderKey, `attachment; filename="file"`) - w.WriteHeader(http.StatusOK) - - mw := multipart.NewWriter(w) - part, err := mw.CreateFormFile(fileFormKey, fileFormKey) - if err != nil { - return fmt.Errorf("error creating multipart form file") - } - - _, err = fileBuffer.WriteTo(part) - if err != nil { - return fmt.Errorf("error writing file data to multipart") - } - - err = mw.Close() - if err != nil { - return fmt.Errorf("error closing multipart writer") - } - - return nil -} - func ErrorHandler(ctx context.Context, mux *runtime.ServeMux, marshaler runtime.Marshaler, w http.ResponseWriter, r *http.Request, err error) { st, ok := status.FromError(err) if !ok { -- GitLab