Hello,
Is there a way of deleting ALL attachments from a page?
I'm running 5.4.1, server
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
Hello Mick,
There is a feature request to add this functionality to Confluence here. I believe there are some workarounds in the comments there you could try.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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 < 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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Stephen, great, thanks for this. I haven't tried it yet, but will get back to you as soon as I have done. Cheers.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For this script to work there is a need to fix escaping that was applied to '<' operator in the if statement
if ( attachments.length < response.size ) { startIndex += 50; getAttachments(attachments, startIndex); } else { deleteAttachments(attachments); }
Expected
if ( attachments.length < response.size ) {
startIndex += 50;
getAttachments(attachments, startIndex);
} else {
deleteAttachments(attachments);
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks @AndrewChuk & @Stephen Deutsch - with the above script this successfully deleted ~60 attachments on Confluence Server 6.13 - saved me having to remove them manually!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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));
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.