SaveUploadedFile uploads the form file to specific dst.
(file *multipart.FileHeader, dst string, perm ...fs.FileMode)
| 717 | |
| 718 | // SaveUploadedFile uploads the form file to specific dst. |
| 719 | func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string, perm ...fs.FileMode) error { |
| 720 | src, err := file.Open() |
| 721 | if err != nil { |
| 722 | return err |
| 723 | } |
| 724 | defer src.Close() |
| 725 | |
| 726 | var mode os.FileMode = 0o750 |
| 727 | if len(perm) > 0 { |
| 728 | mode = perm[0] |
| 729 | } |
| 730 | dir := filepath.Dir(dst) |
| 731 | if err = os.MkdirAll(dir, mode); err != nil { |
| 732 | return err |
| 733 | } |
| 734 | if err = os.Chmod(dir, mode); err != nil { |
| 735 | return err |
| 736 | } |
| 737 | |
| 738 | out, err := os.Create(dst) |
| 739 | if err != nil { |
| 740 | return err |
| 741 | } |
| 742 | defer out.Close() |
| 743 | |
| 744 | _, err = io.Copy(out, src) |
| 745 | return err |
| 746 | } |
| 747 | |
| 748 | // Bind checks the Method and Content-Type to select a binding engine automatically, |
| 749 | // Depending on the "Content-Type" header different bindings are used, for example: |