"How do I get this photo from my phone into my SharePoint list?"
If you've spent any time in the Power Platform forums, you've seen this question a dozen times. While it sounds simple, the "correct" way to do it depends entirely on how you want to use the data later.
In this guide, we'll demystify the Image Column vs. Attachments debate and show you exactly how to handle the upload logic.
1. Image Column vs. List Attachments
Before you drag an action onto your canvas, you need to decide where the image will live.
The Image Column
- Best for: Thumbnails in galleries, user profile pictures, and clean UI display.
- Pros: Easy to display directly in SharePoint and Power Apps; better performance for single images.
- Cons: Limited to one image per column; requires a specific JSON format when updating via Flow.
List Attachments
- Best for: Receipts, inspection photos, and supporting documentation.
- Pros: Supports multiple files per item; natively handles almost any file type.
- Cons: Harder to display "inline" in a gallery; requires more navigation to view.
2. Handling the Base64 "Gotcha"
Whether you're using a Power Apps Camera control or a standard web form, the image usually arrives in Power Automate as a Base64 string or a Data URI.
As I mentioned in my previous post on converting Data URIs, extra characters in that string can break your upload.
The Clean-Up Pattern
If your string looks like data:image/png;base64,iVBORw..., you must isolate the part after the comma.
last(split(outputs('Image_String'), ','))Then, you must convert it to binary for SharePoint to understand it:
base64ToBinary(outputs('Clean_String'))3. Uploading to a SharePoint Image Column
To update an Image column via Power Automate, you can't just pass the binary data. You need to provide a specific JSON metadata object to the "Update item" action.
The format should look like this:
{
"type": "thumbnail",
"fileName": "my_image.jpg",
"fieldName": "MyImageColumn",
"serverRelativeUrl": "/sites/YourSite/Lists/YourList/Attachments/ItemID/my_image.jpg"
}Wait, that looks complicated!
The easier way: Most modern Power Automate versions allow you to simply pass the file content directly into the dynamic content field of the "Update item" action if the connector is updated. If that fails, stick to the JSON format above.
4. Mobile considerations
If your users are uploading photos from the field (low connectivity), keep these tips in mind:
- Compress First: Don't upload raw 12MB photos if a 200KB thumbnail will do. Use Power Apps
JSON()function withIncludeBinaryDatacarefully. - Wait for Success: Always add a "Response" or notification in your app to confirm the upload finished. Silent failures on mobile are common when switching between Wi-Fi and LTE.
Summary
- Use Image Columns for visual UI elements.
- Use Attachments for documents and multiple photos.
- Always clean your Base64 strings before converting to binary.
Stop letting images break your flows. By choosing the right storage method and cleaning your data, you can build photo-uploading apps that actually work!



