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.
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.
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.
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.
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's+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")
also remove any other stuff added after the extension of the file name in the URL
ex: http://mycompanywiki/download/attachments/211190363/St-1.0.docx?version=1&modificationDate=1522908951708?os_username=myusername&os_password=mypassword","D:\St-1.0.docx")
to
http://mycompanywiki/download/attachments/211190363/St-1.0.docx?os_username=myusername&os_password=mypassword","D:\St-1.0.docx")
Tkx a lot !! I searched a while for this
Did you find how to encode the password ?
wget is also not working for me. I get a small file with html in it instead of the file I want.
If I try to put the username and password in the URL as one user suggested, I get "Permission denied".
Using curl resulted in a zero byte file so I ended up accessing my file this way:
wget --header="Authorization: Basic Z2l0Y29uZmlnQGhh" "https://mysite.atlassian.net/wiki/download/attachments/1841544/US_export_policy.jar"
I forgot to mention that I ran the following command to encode the username and password:
printf '%s' 'user:password' | base64
This works, but when works with wget, the downloaded file name will contain ?os_username……
I don't know if there is any convenient wget option to keep the original name "St-1.0.docx"
wget ... -o "St-1.0.docx" is too complicated.
Similarly, ?os_authType=basic has the same issue.
----
Update 1:
Inspired by https://developer.atlassian.com/server/jira/platform/basic-authentication/#construct-the-authorization-header, I found
wget --header="Authorization: Basic <encoded-string-usr:pwd>" <url>
wget --content-disposition <url>\?os_authType=basic (Note: with usr/pwd predefined in ~/.netrc see `man netrc`)
curl -O --header="Authorization: Basic <encoded-string-usr:pwd>" <url>
Update 2:
So
function jiraget { wget --no-check-certificate --content-disposition "$1?os_authType=basic"}
Then we can `jiraget <file_url>`
This solution worked for me.
It looks like you're new here. Sign in or register to get started.