Skip to content

Instantly share code, notes, and snippets.

@PhilipSchmid
Created November 19, 2020 13:38
Show Gist options
  • Star 35 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save PhilipSchmid/1fd2688ace9f51ecaca2788a91fec133 to your computer and use it in GitHub Desktop.
Save PhilipSchmid/1fd2688ace9f51ecaca2788a91fec133 to your computer and use it in GitHub Desktop.
Upload data to Minio using CURL
#!/bin/bash
# Usage: ./minio-upload my-bucket my-file.zip
bucket=$1
file=$2
host=minio.example.com
s3_key=svc_example_user
s3_secret=svc_example_user_password
resource="/${bucket}/${file}"
content_type="application/octet-stream"
date=`date -R`
_signature="PUT\n\n${content_type}\n${date}\n${resource}"
signature=`echo -en ${_signature} | openssl sha1 -hmac ${s3_secret} -binary | base64`
curl -X PUT -T "${file}" \
-H "Host: ${host}" \
-H "Date: ${date}" \
-H "Content-Type: ${content_type}" \
-H "Authorization: AWS ${s3_key}:${signature}" \
https://${host}${resource}
@jerryjosejames
Copy link

<!doctype html><title>MinIO Console</title><script defer="defer" src="./static/js/main.4a881f62.js"></script>You need to enable JavaScript to run this app.

@jerryjosejames
Copy link

I am getting the above response from the Curl command. Am I missing something?

@believerHSP
Copy link

I was getting the same error.

Only change I made is, changed the port in Host entry from 9001 to 9000. And it worked fine for me.

@d-rk
Copy link

d-rk commented Apr 25, 2024

If the filename can contain whitespace you have to urlEncode it:

resource=/${bucket}/$(echo "${filename}" | jq -sRr @uri)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment