Power Apps Upload File to SharePoint Document Library

While working with the SharePoint Online document library, we sometimes need to upload a file or multiple files from Power Apps to the SharePoint document library.

In this Power Apps tutorial, I will explore in detail information about upload files from Power Apps to the SharePoint document library including:

Table of Contents

Power Apps Upload File to SharePoint Document Library

Recently, I got the opportunity to work with Power Apps upload files to the SharePoint document library using different real-time scenarios.

I have created a SharePoint document library named “Policy Documents,” which has the fields below.

Column Name Data Type
NameIt is a default single line of text
ModifiedDate and time
Modified ByPerson or Group
Review DateDate and time
Is ApprovedYes/NO

powerapps upload file to sharepoint document library

Now, I would like to upload or add a file from Power Apps to the SharePoint document library. Unfortunately, there is no direct way to upload a file or files to the document library from Power Apps.

But there is a way to overcome this issue, like connecting the Power Automate Instant flow to the Power Apps and uploading files using a single button click from Power Apps to the SharePoint document library.

NOTE:

As of the last update in January 2022, uploading files to a SharePoint document library directly from Power Apps without using Power Automate is not directly supported.
However, we can directly upload the files from Power Apps to the SharePoint list without using any flows.

Have a look at the below screenshot for the output.

power apps upload file to sharepoint document library

To achieve it, follow the below steps. Such as:

1. On the Power Apps Screen, insert an Edit form control and set its DataSource to any existing SharePoint list for the “Attachment control.”

DataSource = 'Company Attachments'

powerapps upload multiple files to sharepoint

2. Now cut the Attachment control, paste it outside the form, and delete the form. You can see some errors will appear in the Attachment control. To resolve those errors, follow the below properties.

DisplayMode = DisplayMode.Edit Items = Blank() Max attachments = 1

upload multiple files from powerapps to sharepoint document library

3. Now, the Attachment control is ready to attach any file. Once you click on the Attach file link from the attachment control, it will redirect you to your local system to select the files.

powerapps upload file from local

4. Documents or files cannot be uploaded directly to a SharePoint document library from Power Apps; instead, a Power Automate flow must be created for this purpose.

5. For that, go to the Power Automate section, select the Create new flow button, and click on the + Create from blank button, as shown below.

power apps upload file to sharepoint

6. Once you click on the “Create from blank” button, the trigger will be created as PowerApps (V2) by default. Then, you can choose the user input as a File.

powerapps upload file to sharepoint

7. Next, click on the + New step to add an action [Create a file] and provide the below information. Such as:

upload file to sharepoint library using powerapps

8. Once it is done, Rename and Save the flow. You will now find the created flow under the Power Automate section, as shown below.

upload files from powerapps to sharepoint document library

9. Finally, insert a Button control and set its OnSelect property to the code below.

OnSelect = PowerAppsUploadFileToSharePointDocumentLibrary.Run( < File: < name: First(Attach_File.Attachments).Name, contentBytes: First(Attach_File.Attachments).Value >> );

upload file from powerapps to sharepoint library

10. Once your app is ready, Save, publish, and Preview the app. When the user uploads any file or document from the local device and clicks on the button control, the flow will trigger successfully, as shown below.

upload file from power apps to sharepoint library

11. Also, the file will stored in the SharePoint Online document library as well.

This way, you can upload a single file from Power Apps to the SharePoint document library.

power apps upload file

Power Apps Upload Multiple Files to SharePoint

Similarly, if you want to upload multiple files from Power Apps to the SharePoint document library, you can follow the code below to set the button control’s OnSelect property.

OnSelect = ForAll( Attach_File.Attachments As Document, PowerAppsUploadFileToSharePointDocumentLibrary.Run( < File: < contentBytes: First(Attach_File.Attachments).Value, name: First(Attach_File.Attachments).Name >> ) )

Note:

If you want to upload multiple files from Power Apps to SharePoint library, you should increase the Max attachments from 1 to another value.

power app upload file to sharepoint

Save, Publish, and Preview the app. Whenever the user selects multiple files from a local device and clicks on the button control, the flow will trigger successfully, and files will be stored in the document library.

how to upload files to sharepoint library

This is how we can work with Power Apps upload multiple files to the SharePoint library.

How to Add Metadata to the SharePoint Document Library

Suppose you want to upload the file, including the metadata from Power Apps, to the SharePoint document library; follow the below steps. Such as:

1. On the Power Apps Screen -> Insert an Edit form above the Attachment control and set its DataSource as:

DataSource = 'Policy Documents'

How to Add metadata to the SharePoint document library

2. Now, edit the current flow, like adding Text input for File Properties -> Add Compose action and setting Its Inputs as a SharePoint online site, as shown below.

How to Add Power Apps metadata to the SharePoint document library

3. Next, add another action [Update file properties] and provide the below information. Such as:

upload file from powerapps to sharepoint online library

4. After saving the flow, insert a Submit icon on the Power Apps Screen and set its OnSelect property to the code below.

OnSelect = PowerAppsUploadFileToSharePointDocumentLibrary.Run( JSON( frm_Records.Updates, JSONFormat.IncludeBinaryData ), < file: < name: First(Attach_File.Attachments).Name, contentBytes: First(Attach_File.Attachments).Value >> )

powerapps upload file to sharepoint document

5. Save, Publish, and Preview the app. Once the user adds metadata, including the attachment, and clicks on the save icon, the flow will trigger successfully, and you will get the attachment file, including metadata, on the SharePoint library.

powerapps upload multiple files to sharepoint library

I trust this Power Apps tutorial will be helpful. If you have any requirements related to uploading a Power Apps file to the SharePoint document library, you can follow the above examples to do it.

Also, you may like:

I am Bijay a Microsoft MVP (10 times – My MVP Profile) in SharePoint and have more than 17 years of expertise in SharePoint Online Office 365, SharePoint subscription edition, and SharePoint 2019/2016/2013. Currently working in my own venture TSInfo Technologies a SharePoint development, consulting, and training company. I also run the popular SharePoint website EnjoySharePoint.com

David N says:

Great article, thank you. However, I’m experiencing an issue with Step #8. While attempting to add the File Content parameter to the Create File action. I’ve followed your labeling and instructions so I’m using the same names, etc.
When I attempt to add this text to the File Content field:
dataUriToBinary(items(‘Apply_to_each’)[‘DataStream’])
I receive an error message stating “The expression is invalid”. What am I missing?

Jim L says:

I ran into the same problem. I got around it by choosing Dynamic Content and then choosing the DataStream value from Parse JSON and it appeared to work, at least it copied the files. I need to do some more testing though to see if that will cause some other problem.

Matthew S Brice says: I’m having same issue. Were you able to resolve? Jim Parker says:

I think the problem is that you’re cutting and pasting from this website, and the ‘ character gets transformed into an incorrect character. Try manually replacing those and see if it works better for you.

Andy L says: Neil says:

Good article – but my flow fails at Step 10 The Automate step ‘PowerApps’ give the following error “InvokerConnectionOverrideFailed. Failed to parse invoker connections from trigger ‘manual’ outputs. Exception: Could not find any valid connection for connection reference name ‘shared_sharepointonline’ in APIM tokens header.”
And the same error is also on the buttons. Any assistance welcomed.

Neil says:

Problem Sorted – had to drop connection via the Action tab in Power Apps save it and add it again. Here’s the helping URL https://powerusers.microsoft.com/t5/Building-Power-Apps/PowerApps-error-when-workflow-is-run-quot/td-p/491911

Bijay Kumar says: Glad the issue has been resolved. ven says: Hi, do you know maybe how to reset/clear attachments control after uploading files? Bijay Kumar says: Hi,
Can you check out this article https://www.spguides.com/powerapps-email-attachment-control/ LaTina says: This tutorial was a life saver, thank you! Bijay Kumar says: Thanks, it helps! Brian says:

Brilliant! An absolute lifesaver. After days of looking around and trying to figure this out, your guide is the first one that ties everything together. I used a Logic App instead of a flow, made a few tweaks, and I have files flying into my Azure file share now. I will never understand why microsoft makes this as convoluted as possible. Thanks again!

Albi says:

Hello. Thank you for a simple guide on how to upload files to a document library using flow. Unfortunately, in step 8, the flow ends with an error: Unable to process template language expressions in action ‘Create_file’ inputs at line ‘1’ and column ‘8023’: ‘The template language function’ dataUriToBinary ‘expects its parameter to be formatted as a valid data URI. The provided value ‘appres: // blobmanager / 493b8d139c8b4c34a1c798e8f48faf7d / 3’ was not formatted correctly. Please see https://aka.ms/logicexpressions#dataUriToBinary for usage details. ‘.

Jim Parker says:

I think you might have missed the step where you need to convert that blob pointer to the image data stream. An easy clue is the string should not start with “appres: // blobmanager…”, but rather something like “data:image…” Hope that helps point you in the right direction.

Lee says: This article is great, thanks for the help doing something pretty difficult Bijay Kumar says: Thanks Lee! Hiral says: does it allow to upload a file larger than 25MB since attachment control has size restriction? Chad says:

How would you update the meta data individually for these files? I’ve created a gallery to edit the varfields for each attachment file but I don’t know how to get the update properties to update each correlated file with their new data.

Geo says:

After a few typos, I got my act together and this worked as you explained. I appreciated the thorough portrayal! Many thanks for your inestimable help Bijay

Utoro Princewill says:

NIce post here, how do we delete a file from the SP library based on the file removed from the attachmentBox from powerapps then update the library with the remaining files.

Sakthi S says: Hi, Is there any way we can see the thumbanail of the file attached and uploaded? Sheraz Sarrdar says:

Hi
Do you know if its possible to upload images to a specific folder that you suggested in Powerapps, i want to put my images in a folder i select in powerapps, mainly because we will be uploading images to different folder each time.
Thanks for any help in Advance.

ven says:

Just add another input field in PowerApps Trigger and add param with your path for example /Folder/OtherFolder and use dynamic content instead of Folder from Create file action

JulyS says:

Hello, good afternoon, I get an error when opening the document uploaded to SharePoint online, why would it be?

RyanC says:

Same issue as above. Attachment control and flow works but the file opens blank. I’ve tried jpeg and pdf files and have opened in sharepoint and tried downloading first. All open blank. I looked at the data stream, but can’t find anything wrong?

Juan says: You have set the “Image” property in the Gallery to ThisItem.Value So says:

Gracias por el articulo. Una consulta, el flujo me tira error en la acción Compose: InvalidTemplate. Unable to process template language expressions in action ‘Compose’ inputs at line ‘0’ and column ‘0’: ‘The template language function ‘json’ parameter is not valid. The provided value ‘adj’ cannot be parsed: ‘Unexpected character encountered while parsing value: a. Path ”, line 0, position 0.’. Please see https://aka.ms/logicexpressions#json for usage details.’. Qué puede ser?

TwoSmoker says:

This article is great. I have adopted our SharePoint/PowerApps processes and I am “green” and do not have any formal training in these subjects. This has helped a lot!! If I could ask one question. To further this process, I would like to create a button to launch the attachment. I assume using the launch command? I am having some trouble. If you have any advice, I would appreciate it!

Dean says:

Having some issues, I’m still getting the appress://xxx value off the Image attribute from the gallery image.

Raul and Paula says: Jena says:

Hi There, I’m not getting the attachment data card when attaching the edit form to a sharepoint library. any suggestions?

Nadiya says:

hi I tried the above flow I am getting this error. please let me know how to fix this
“Failed to parse invoker connections from trigger ‘manual’ outputs. Exception: Could not find any valid connection for connection reference name ‘shared_sharepointonline’ in APIM tokens header.”

Kendra says:

Hello and thank you for this tutorial. It is exactly what I need for an awards app where people can submit nominations. What I’d like to do is have the nominations and supplemental documents saved to a Sharepoint list and library, but obviously I do not want anyone except the administrators of these awards to have access to this information. If I follow the steps of this tutorial, will it work if I do not share the Sharepoint site with the people submitting the form and uploading the documents? The data source about the awards in in sql and implicity shared, but the nomination data needs to be private. Any help on how to design this securely would be appreciated.

Mustafa says:

Hi, Bijay! I have a Dataverse table as BookingTables and I have enabled Notes and Files for that table. and I have added Attachments in the form (Which is available when you Turn on Enabled Notes and Files) On Submit, I am submitting Form Data to Dataverse and Attachment to Notes and then Using flow to Move the Attachments from Notes to SharePoint Document Library
and I have also updated the SharePoint Library File with the Dataverse GUID to relate it. Now, I want to show this file in my Edit form in Attachment Control (which is of Dataverse Table). Please help

John says:

In the “PowerApps Upload File to SharePoint Library using Flow” step 3, you lay out how to update the items for a choice control. What would you need to do and update for a text control? The Choice control worked out great. I am so close to finishing this project I just need to in this section how to handle text controls, and if anything other than the variable and update file properties need to updated in the flow. Thank you so much for this tutorial. It has been really great to use.

John says:

I meant the section “PowerApps Upload Files to SharePoint Library with different types of Columns” section 3.