While working on a client project, I faced a common requirement. The client wanted users to upload images directly from a Power Apps form and store them securely in Dataverse. This was needed for scenarios like uploading ID proofs, profile photos, or supporting documents during form submission.
At first, it sounded simple, but when you actually start implementing it, you realize there are a few important things to understand, such as configuring the Dataverse image column, connecting it properly in Power Apps, and saving the image without errors.
In this tutorial, I will explain how to upload images to Dataverse from Power Apps with examples.
Dataverse Upload Images From Power Apps
Let’s follow the instructions below to upload Power Apps images to the Dataverse table.
- In the image below, you can see there is a Dataverse table called TSinfo Site Galleries. This table has an image column named SiteImage where all photos will be stored.

- Now I would like to upload the Power Apps image to this Dataverse image column. To do so, we will create a Blank Canvas app in Power Apps.
- Once the app is ready to use, the next step is to create a Dataverse connection and connect to the specific Dataverse table (TSinfo Site Galleries) where we want to store the image.
- Go to Data -> + Add data -> select the Dataverse table TSinfo Site Galleries under Tables. The table is now ready to use in Power Apps.

- To upload an image, add an Add picture control from Insert -> Media -> Add picture, as shown below.

- Add a Button control to upload the image to the Dataverse image column. Provide the button text as Upload Image.

That’s it to do in Power Apps. Next, we will create a flow in the app.
- To create a new flow, on the Power Apps screen, go to the Action tab -> Click Power Automate -> Create new flow -> + Create from blank as below.

- The Power Apps flow will appear as shown in the screenshot below. Click on + New step to add a new step below the PowerApps.

- Search Add a new row action under the Microsoft Dataverse section. The action will appear in the PREMIUM version. Click and add it over there.

- Expand the Add a new row action and provide the Dataverse table name (TSinfo Site Galleries) where you want to upload the image.

- Expand on Show advanced options and enter the following field values:
- SiteName = Go to the Dynamic content of this field and click on Ask in PowerApps. Then the field value will be set to whatever you provide in Power Apps.

- SiteImage = Similarly, go to Dynamic content and click Ask in PowerApps. If you cannot see this option, tap the See More option to make it visible.

- Provide a name for the flow (Upload PA Image to DV) and save it.

- Return to the Power Apps screen and apply the code below to the button’s (Upload Image) OnSelect property as:
OnSelect = UploadPAImagetoDV.Run("New Image",JSON(UploadedImage1.Image,JSONFormat.IncludeBinaryData))
Where,
- UploadPAImagetoDV = Flow name that you have created recently
- “New Image” = Provide a name for the image that will be uploaded to the Dataverse table
- UploadedImage1 = Image control name from the Power Apps Picture Control

- Once it’s done, save, publish, and preview the app. Tap the picture control to select an image from the system, then tap the Upload Image button.

- Now, go to the flow and check the flow run history (My Flows –> Select Flow Name -> Tap on Show more option -> Run history). You will see that the flow run has failed. The right side of the page represents the error details that say: “InnerException : Microsoft.OData.ODataException: Cannot convert the literal ‘”data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHC….”

The above error message specifies “Cannot convert the literal data image“, which means the Dataverse image column is expecting only the binary types, not any other content types.
- To overcome this issue, edit the flow and add a Compose action below the PowerApps trigger action. Click on the + icon -> Add an action -> Search for “Compose” in the search bar -> Select “Compose” under the Data Operation section as shown below.

The compose action has only one field, i.e.,
Inputs = Go to the Expression tab and apply the code below,
Inputs = replace(split(triggerBody()['Addanewrow_SiteImage'],',')[1],'"','')
Where,
‘Addanewrow_SiteImage‘ = This is the Site image column name from the Add a new row action. (As before, you have selected the Ask in PowerApps option to add it)
Once you have applied the formula, click OK.

- Next, expand the “Add a new row” action and remove the image name (Addanewrow_SiteImage) from the SiteImage field. Go to the Dynamic content tab and add the Outputs under the Compose section as like below.

That’s all there is to do in the flow. Now save the flow and go back to the Power Apps app.

- Then save, publish, and preview the app. Upload an image using the Upload Image button. You will notice that the flow status shows successful after you look at the flow run history.

Go to the Dataverse table (TSinfo Site Gallery) now to see the newly uploaded image in the table’s top row.

This way, we can upload images from Power Apps to a Dataverse table in steps.
Also, you may like some more Dataverse tutorials:
- Filter Power Apps Gallery By Dataverse Choice Column
- Search in a Power Apps Gallery
- Dataflow in Dataverse
- Get Dataverse Created by in Power Automate
- Power Apps Dataverse Yes/No Field
- Create Dataverse File Field

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.
Has something changed since this was posted as im getting an error with the OnSelect, saying Invalid number of arguments received 2 expected 10?