files/en-us/web/api/window/showopenfilepicker/index.md
{{APIRef("File System API")}}{{SecureContext_Header}}{{SeeCompatTable}}
The showOpenFilePicker() method of the
{{domxref("Window")}} interface shows a file picker that allows a user to select a file
or multiple files and returns a handle for the file(s).
showOpenFilePicker()
showOpenFilePicker(options)
options {{Optional_Inline}}
excludeAcceptAllOption {{Optional_Inline}}
false. By default the picker should include an option to not apply
any file type filters (instigated with the type option below). Setting this option
to true means that option is not available.id {{Optional_Inline}}
multiple {{Optional_Inline}}
false. When
set to true multiple files may be selected.startIn {{Optional_Inline}}
"desktop", "documents",
"downloads", "music", "pictures", or "videos") to open the dialog in.types {{Optional_Inline}}
description {{Optional_Inline}}
accept
A {{jsxref("Promise")}} whose fulfillment handler receives an {{jsxref('Array')}} of {{domxref('FileSystemFileHandle')}} objects.
AbortError {{domxref("DOMException")}}
SecurityError {{domxref("DOMException")}}
accept options of any item in types options can't parse a valid MIME type.accept options of any item in types options is invalid, for example, if it does not start with . and if end with ., or if it contains any invalid code points and its length is more than 16.types options is empty and the excludeAcceptAllOption options is true.Transient user activation is required. The user has to interact with the page or a UI element in order for this feature to work.
Here we set the options object for passing into the method. We'll allow a selection of image file types, with no option to allow for all files types, or multiple file selection.
const pickerOpts = {
types: [
{
description: "Images",
accept: {
"image/*": [".png", ".gif", ".jpeg", ".jpg"],
},
},
],
excludeAcceptAllOption: true,
multiple: false,
};
Next we can create an asynchronous function which show the file picker and return the selected file.
// create a reference for our file handle
let fileHandle;
async function getFile() {
// open file picker, destructure the one element returned array
[fileHandle] = await window.showOpenFilePicker(pickerOpts);
// run code with our fileHandle
}
{{Specifications}}
{{Compat}}