You are right that there is a limitation. The Camera and Signature controls output in-memory data that cannot be looped directly through ForAll into SharePoint attachments the same way text fields can.
The workaround is to capture both once into variables before the loop runs:
Set(varPhoto, Camera1.Photo);
Set(varSignature, SignatureCanvas1.Image);
Then inside your ForAll, patch the attachments using those variables:
ForAll(
colSelectedItems,
Patch(
YourList,
LookUp(YourList, ID = ThisRecord.ID),
{
Attachments: Table(
{ Name: "photo_" & ThisRecord.ID & ".jpg", Value: varPhoto },
{ Name: "signature_" & ThisRecord.ID & ".png", Value: varSignature }
)
}
)
);
This way the recipient signs once, you store it in a variable, and the same photo and signature get stamped across all the selected items in one go. Make sure the SharePoint list has the Attachments feature enabled.
If you are dealing with a large number of items at once, consider triggering a Power Automate flow after the Patch to handle the attachment writing — it is more reliable at scale than the client-side loop.
Vishnu WR
Please ✅ Does this answer your question if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider answering Yes to Was this reply helpful? or give it a Like ♥