using_attachments_feature_layers

Layer Attachments

Accessing FeatureLayer.attachments property, will return an AttachmentManager object. This object can be used to list, download, add, delete and update attachments.

In [ ]:
# connect to web GIS
from arcgis.gis import GIS
gis = GIS("portal url", "username","password")
search_result = gis.content.search("Chennai Rainfall", "Feature Layer")
chennai_rainfall = search_result[0]
In [ ]:
#get feature layers from the item
cr_lyr = chennai_rainfall.layers[0]

List attachments

Use the get_list() method on attachments property of a FeatureLayer object to get a list of dictionaries containing information about attachments. The get_list() accepts object id as parameter. You can loop through all the features and call this method if you would like to view all attachments on the layer

In [ ]:
cr_lyr.attachments.get_list(oid=1)
Out[ ]:
[{'contentType': 'image/png',
  'id': 1,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 2,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 4,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394}]

Download attachments

Use the download() method on attachments property of a FeatureLayer object to download individual attachments. It accepts the object id of the feature and the attachment id of the attachment as parameters. If the save_path parameter is not specified, the API saves it to user temporary directory

In [ ]:
cr_lyr.attachments.download(oid=1, attachment_id=1)
Out[ ]:
'C:\\Users\\rohit\\AppData\\Local\\Temp\\AppTemplate.png'

Add new attachments

Use the add() method on attachments property of a FeatureLayer object to add new attachments to a feature. It accepts the object id of the feature and path to attachment as parameters

In [ ]:
cr_lyr.attachments.add(1, 'C:\\Users\\rohit\\AppData\\Local\\Temp\\AppTemplate.png')
Out[ ]:
{'addAttachmentResult': {'globalId': None, 'objectId': 5, 'success': True}}

You can list the attachments to verify the add operation

In [ ]:
cr_lyr.attachments.get_list(1)
Out[ ]:
[{'contentType': 'image/png',
  'id': 1,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 2,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 4,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 5,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394}]

Delete attachments

Unwanted attachments can be removed by calling the delete() method on attachments property of a FeatureLayer object. It accepts the feature’s object id and attachment’s id as parameters

In [ ]:
cr_lyr.attachments.delete(1,4)
Out[ ]:
{'deleteAttachmentResults': [{'globalId': None,
   'objectId': 4,
   'success': True}]}

List the attachments to verify removal

In [ ]:
cr_lyr.attachments.get_list(1)
Out[ ]:
[{'contentType': 'image/png',
  'id': 1,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 2,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394},
 {'contentType': 'image/png',
  'id': 5,
  'name': 'AppTemplate.png',
  'parentObjectId': 1,
  'size': 1394}]