Delete all attachments
Asked by Mick Davidson:

Hello,

Is there a way of deleting ++**ALL**++ attachments from a page?

I'm running 5.4.1, server


Answers:
author: Giuliano C.
body: In addition to the information above: The Bob Swift's CLI add-on can help to remove a selection of attachments: <https://bobswift.atlassian.net/wiki/display/CSOAP/How+to+remove+a+selection+of+attachments>


author: Rodrigo Rosa
body: Hello Mick,

There is a feature request to add this functionality to Confluence [here](https://jira.atlassian.com/browse/CONF-17020). I believe there are some workarounds in the comments there you could try. :smile:


author: Stephen Deutsch
body: Hi Mick,

If you load up the browser console (by pressing F12 or Ctrl/Cmd + Shift + i) and paste the following code in and press Enter, it will delete all attachments from the page you are currently viewing.

```
var deleteAttachments = function(attachments) {    requestObject = [];    requestObject.push(attachments[0].ownerId);    requestObject.push(attachments[0].fileName);    jQuery.ajax({        contentType: 'application/json',        type: 'POST',        url: '/rpc/json-rpc/confluenceservice-v2/removeAttachment',        data: JSON.stringify(requestObject),        success: function( response ) {            attachments.shift();            if (attachments.length) {                deleteAttachments(attachments);            } else {                console.log("Done!");            }        }    });}var getAttachments = function(attachments, startIndex) {    var attachments = attachments || [];    var startIndex = startIndex || 0;    jQuery.ajax({        url: contextPath + "/rest/prototype/1/content/" + AJS.params.pageId + "/attachments.json?start-index=" + startIndex,        success: function(response) {            attachments.push.apply(attachments, response.attachment);            if ( attachments.length &lt; response.size ) {                startIndex += 50;                getAttachments(attachments, startIndex);            } else {                deleteAttachments(attachments);            }        }    });}getAttachments();
```

This should work for most versions of Confluence, including 5.4.1. It will probably even work for Confluence Cloud.

Note: This doesn't check if you have permission to delete the attachments or not. If not, it won't work.

comments: author: Mick Davidson
body: Stephen, great, thanks for this. I haven't tried it yet, but will get back to you as soon as I have done. Cheers.


author: AndrewChuk
body: For this script to work there is a need to fix escaping that was applied to '\<' operator in the if statement

```
if ( attachments.length &lt; response.size ) {                startIndex += 50;                getAttachments(attachments, startIndex);            } else {                deleteAttachments(attachments);            }
```

Expected

if ( attachments.length \< response.size ) {  
startIndex += 50;  
getAttachments(attachments, startIndex);  
} else {  
deleteAttachments(attachments);  
}


author: Matt D
body: Thanks [@AndrewChuk](/t5/user/viewprofilepage/user-id/3016153) \& [@Stephen Deutsch](/t5/user/viewprofilepage/user-id/781490) - with the above script this successfully deleted \~60 attachments on Confluence Server 6.13 - saved me having to remove them manually!


author: Vadym Milichev
body: ```
var headers = {
'Authorization': 'Basic <base64credential_Y2hldjoyOUtsdWJuaWthJg>',
'X-Atlassian-Token': 'nocheck'
};
var apiRoot = 'https://confluence.host.net/rest/api';

// page
var containerId = '171607042'

fetch(`${apiRoot}/content/${containerId}/child/attachment`, {headers})
.then(r => r.json())
.then(o => Promise.all(o.results.map(i=>fetch(i._links.self, {method: "DELETE", headers}))))
.then(r => console.log('r', r));
```


Tags: attachment

delete