wget to download Confluence attachment

How can I use wget to download a Confluence attachment without any plugins?

The command:

wget http://{yourconfluence}/download/attachments/{pageid}/{filename

Results in an html file rather than the file itself.  In my specific case I am trying to download a powerpoint file.  If I enter the same URL in a browser, the browser will download the file correctly.

4 answers

1 accepted

Try curl with the -O option. I had success using a command like this:

curl -O -uwilliam:password "http://confluence.mydomain.com/download/attachments/12345678/readme.txt"

 

Note that I stripped "?api=v2" from the download url. It wasn't necessary in my case and curl will use it in the file name.

 

This was with Confluence 4.3.7. I have no other version to test.

curl with the -O does work with the one Confluence setup that I need it to work with.  (Yet it didn't work with another Confluence setup I was testing with).  I guess this is the workaround I'll use since wget doesn't seem to work.  Thanks.

1 vote

Give it the user name and password for someone who can see the page, and the url for the attachment you're trying to get.  wget user:pass http://yourconfluence/pathtoattachment basically

It is not a permissions issue.  Using

wget http://yourconfluence/downloads/attachments/pageid/filename 

Results in an html file rather than the file itself.  

You did not explain that in the original question.  You only asked how you use wget and I told you.

Now you've changed the question to something totally different, I can try again, although the answer is basically the same - hit the url for the file with wget and a username and password.

The problem you're having is probably that the url is wrong (download, not downloads) and you may need to add the api version to it by adding &api=2 to the end.

Yes, I changed the question in hopes of making the issue clearer.  

Fixing the misspelling (downloads --> download) and adding the &api=2 still did not work.  Tried adding a ?api=2 as well.  All resulted in an html page.

OK, you're doing something differently to me then.  I get the file I ask for.

Two further questions -

  1. What do you get when you use a browser to hit the same link?
  2. When wget fetches html, what does it actually say?  Open the file in a browser?

 

  1. Using chrome, I pasted the URL in the address bar and I get the "Save As" dialog box.  When I've saved the selection, I am able to open the file (in this case a powerpoint).
  2. When wget fetches the same URL, it logs that it is connecting, then saving to the filename, then 100% complete, and then the file size which is much smaller than the size of the powerpoint.  I've also tried using curl -O URL with the same result as the wget command.

 

Ok, great, so the browser is getting the right file.  So I don't know why wget doesn't.  What does the file that wget actually saves say?

The saved file has the same filename as it the attachment (ie. filename.ppt).  It won't open in powerpoint, but I can open it in notepad and it starts with "<!DOCTYPE html PUBLIC". If I manually change the extension to .html and open it in a browser, the page looks like a Confluence log-in page.  I guess this means the username and password that is part of the wget command line isn't being transferred over to Confluence's login request?  

In a new browser, entering the URL does ask me for the username and password (didn't notice it before since I was already logged into Confluence).

 

Yes, that's correct - you aren't logged in, so Confluence serves up a login page (in html) to ask the process to log in.  How are you doing the username:password part of the wget?

wget --user myname --password mypassword URL

 

(just a side note, I'm limited to 3 responses per day since I am new to the forum)

 

Was this ever resolved?? 

No. the command aboved marked solved does NOT work.

I am getting exactly the same issue. 

Where file downloaded (supposed to be a .doc) starts with <!DOCTYPE html>

The file size is much smaller. And if I manually change the file to be .html, it goes into a cached page of what looks like the login page. So the credentials are not getting transferred.

Works fine on other site ie:

This works.

wget -O my.pdf  "https://www.tutorialspoint.com/vbscript/vbscript_tutorial.pdf"

But this doesn't work

wget -O my.pdf  --user user --password mypassword "http://tsm-wiki/download/attachments/38897186/Al%27s+comments.doc?version=1&modificationDate=1351755856000"

 

Any help is much appreciated.

Cheers.

I solved it by using something that seems to be the case for other Atlassian products (ie JIRA)

You need to have the login info in the URL itself.

$client = new-object System.Net.WebClient

$client.DownloadFile("http://Companywiki/download/attachments/211190363/St-1.0.docx?os_username=myusername&os_password=mypassword","D:\St-1.0.docx")

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Jul 10, 2018 in Confluence

We want to see the templates you've created in Confluence!

Hi Community, Jessica here from the Confluence Product Marketing team!  July’s community challenge is all about sharing pictures  — and as an extension of our first post on what ...

872 views 23 12
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you