---
title: "fileExporter(isPresented:documents:contentTypes:onCompletion:onCancellation:)"
framework: swiftui
role: symbol
role_heading: Instance Method
path: "swiftui/view/fileexporter(ispresented:documents:contenttypes:oncompletion:oncancellation:)"
---

# fileExporter(isPresented:documents:contentTypes:onCompletion:onCancellation:)

Presents a system dialog for allowing the user to export a collection of documents that conform to FileDocument to files on disk.

## Declaration

```swift
nonisolated func fileExporter<C>(isPresented: Binding<Bool>, documents: C, contentTypes: [UTType] = [], onCompletion: @escaping (Result<[URL], any Error>) -> Void, onCancellation: @escaping () -> Void = {}) -> some View where C : Collection, C.Element : FileDocument

```

## Parameters

- `isPresented`: A binding to whether the dialog should be shown.
- `documents`: The in-memory documents to export.
- `contentTypes`: The list of supported content types which can be exported. If not provided, FileDocument.writableContentTypes are used.
- `onCompletion`: A callback that will be invoked when the operation has succeeded or failed. The result indicates whether the operation succeeded or failed.
- `onCancellation`: A callback that will be invoked if the user cancels the operation.

## Discussion

Discussion In order for the dialog to appear, isPresented must be true. When the operation is finished, isPresented will be set to false before onCompletion is called. If the user cancels the operation, isPresented will be set to false and onCancellation will be called. To further configure the dialog’s appearance and behavior, use these view modifiers: fileDialogDefaultDirectory(_:), fileDialogConfirmationLabel(_:), fileDialogMessage(_:), fileDialogBrowserOptions(_:), fileExporterFilenameLabel(_:), and fileDialogCustomizationID(_:). For example, a button that exports a collection of documents and handles cancellation might look like this: struct ExportAllButton: View {     @State private var isExporterPresented = false     var documents: [TextFile]

var body: some View {         Button("Export All") {             isExporterPresented = true         }         .fileExporter(             isPresented: $isExporterPresented,             documents: documents,             contentTypes: [.utf8PlainText]         ) { result in             switch result {             case .success(let urls):                 urls.forEach { print("Saved to \($0)") }             case .failure(let error):                 print(error)             }         } onCancellation: {             print("Export cancelled")         }     } }

## See Also

### Exporting to file

- [fileExporter(isPresented:document:contentType:defaultFilename:onCompletion:)](swiftui/view/fileexporter(ispresented:document:contenttype:defaultfilename:oncompletion:).md)
- [fileExporter(isPresented:documents:contentType:onCompletion:)](swiftui/view/fileexporter(ispresented:documents:contenttype:oncompletion:).md)
- [fileExporter(isPresented:document:contentType:defaultFilename:onCompletion:onCancellation:)](swiftui/view/fileexporter(ispresented:document:contenttype:defaultfilename:oncompletion:oncancellation:).md)
- [fileExporter(isPresented:document:contentTypes:defaultFilename:onCompletion:onCancellation:)](swiftui/view/fileexporter(ispresented:document:contenttypes:defaultfilename:oncompletion:oncancellation:).md)
- [fileExporter(isPresented:item:contentTypes:defaultFilename:onCompletion:onCancellation:)](swiftui/view/fileexporter(ispresented:item:contenttypes:defaultfilename:oncompletion:oncancellation:).md)
- [fileExporter(isPresented:items:contentTypes:onCompletion:onCancellation:)](swiftui/view/fileexporter(ispresented:items:contenttypes:oncompletion:oncancellation:).md)
- [fileExporterFilenameLabel(_:)](swiftui/view/fileexporterfilenamelabel(_:).md)
