MCPcopy
hub / github.com/filebrowser/filebrowser / writeFile

Function writeFile

http/resource.go:296–327  ·  view source on GitHub ↗
(afs afero.Fs, dst string, in io.Reader, fileMode, dirMode fs.FileMode)

Source from the content-addressed store, hash-verified

294}
295
296func 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
329func delThumbs(ctx context.Context, fileCache FileCache, file *files.FileInfo) error {
330 for _, previewSizeName := range PreviewSizeNames() {

Callers 2

resourcePostHandlerFunction · 0.85
resource.goFile · 0.85

Calls 4

MkdirAllMethod · 0.80
OpenFileMethod · 0.80
CloseMethod · 0.65
StatMethod · 0.45

Tested by

no test coverage detected