CreateTempFile create temp file from io.ReadCloser, and seek to 0
(r io.Reader, size int64)
| 114 | |
| 115 | // CreateTempFile create temp file from io.ReadCloser, and seek to 0 |
| 116 | func CreateTempFile(r io.Reader, size int64) (*os.File, error) { |
| 117 | if f, ok := r.(*os.File); ok { |
| 118 | return f, nil |
| 119 | } |
| 120 | f, err := os.CreateTemp(conf.Conf.TempDir, "file-*") |
| 121 | if err != nil { |
| 122 | return nil, err |
| 123 | } |
| 124 | readBytes, err := CopyWithBuffer(f, r) |
| 125 | if err != nil { |
| 126 | _ = os.Remove(f.Name()) |
| 127 | return nil, errs.NewErr(err, "CreateTempFile failed") |
| 128 | } |
| 129 | if size > 0 && readBytes != size { |
| 130 | _ = os.Remove(f.Name()) |
| 131 | return nil, errs.NewErr(err, "CreateTempFile failed, incoming stream actual size= %d, expect = %d ", readBytes, size) |
| 132 | } |
| 133 | _, err = f.Seek(0, io.SeekStart) |
| 134 | if err != nil { |
| 135 | _ = os.Remove(f.Name()) |
| 136 | return nil, errs.NewErr(err, "CreateTempFile failed, can't seek to 0 ") |
| 137 | } |
| 138 | return f, nil |
| 139 | } |
| 140 | |
| 141 | // GetFileType get file type |
| 142 | func GetFileType(filename string) int { |
no test coverage detected