Anyone know of a way to fix these attachments without having to reappend? We've since edited the dataset so we can't just truncate those records and reappend.
I figured it out using the Python API:
thehostedlayer = gis.content.get('ITEMID')
mylyr = thehostedlayer.layers[0]
fixoids = [1062,1063,1065] #made a list of the 100s of objectids of features that needed fixing
for oid1 in fixoids:
attachment_IDs = [a["id"] for a in mylyr.attachments.get_list(oid1)]
for attachment1 in attachment_IDs: #goes through each attachment, so it's fine if the feature has more than one
filepath = mylyr.attachments.download(oid1,attachment1,r"C:\Users\myname\Desktop\temp")
mylyr.attachments.update(oid1,attachment1,r'%s'%filepath[0])
If you use mylyr.attachments.get_list(objectid), you can see before you run the script, my attachment type for photos were 'application/octet-stream'. after the script, they became 'image/jpeg' and finally displayed properly in the popups in my webmaps. There was a delay, though, even with clearing my cache. I left my PC for about an hour and when I came back the popups were fixed.