# Attachments in CloudCode

Attachment fields can be accessed in CloudCode with the following JavaScript API. This applies to fields of `type="`[`attachment`](https://docs.journeyapps.com/reference/build/data-model-configuration/model/field#file-attachment-attachment)`"`, `type="`[`photo`](https://docs.journeyapps.com/reference/build/data-model-configuration/model/field#photo-photo)`"` and `type="`[`signature`](https://docs.journeyapps.com/reference/build/data-model-configuration/model/field#signature-signature)`"`.

```javascript
myobject.photo.present(); // false if not uploaded yet
myobject.photo.url(); // null if not uploaded yet
myobject.photo.processed('fullscreen').url();
await myobject.photo.toBuffer();
await myobject.photo.toBase64();
await myobject.mycsvfile.toText();
myobject.photo.toJSON(); // output state and urls in APIv4-compatible JSON.
```

To upload a file, create a new Attachment object using [`Attachment.create()`](https://docs.journeyapps.com/reference/build/js-ts-apis/attachment#syntax):

```javascript
const photoData = Buffer.from([...]);

myobject.mycsvfile = await Attachment.create({ filename: 'data.csv', text: csvdata });
myobject.photo = await Attachment.create({ filename: 'photo.jpg', data: photoData });
await myobject.save();
```
