(afs afero.Fs, dst string, in io.Reader, fileMode, dirMode fs.FileMode)
| 294 | } |
| 295 | |
| 296 | func writeFile(afs afero.Fs, dst string, in io.Reader, fileMode, dirMode fs.FileMode) (os.FileInfo, error) { |
| 297 | dir, _ := path.Split(dst) |
| 298 | err := afs.MkdirAll(dir, dirMode) |
| 299 | if err != nil { |
| 300 | return nil, err |
| 301 | } |
| 302 | |
| 303 | file, err := afs.OpenFile(dst, os.O_RDWR|os.O_CREATE|os.O_TRUNC, fileMode) |
| 304 | if err != nil { |
| 305 | return nil, err |
| 306 | } |
| 307 | defer file.Close() |
| 308 | |
| 309 | _, err = io.Copy(file, in) |
| 310 | if err != nil { |
| 311 | return nil, err |
| 312 | } |
| 313 | |
| 314 | // Sync the file to ensure all data is written to storage. |
| 315 | // to prevent file corruption. |
| 316 | if err := file.Sync(); err != nil { |
| 317 | return nil, err |
| 318 | } |
| 319 | |
| 320 | // Gets the info about the file. |
| 321 | info, err := file.Stat() |
| 322 | if err != nil { |
| 323 | return nil, err |
| 324 | } |
| 325 | |
| 326 | return info, nil |
| 327 | } |
| 328 | |
| 329 | func delThumbs(ctx context.Context, fileCache FileCache, file *files.FileInfo) error { |
| 330 | for _, previewSizeName := range PreviewSizeNames() { |
no test coverage detected