Documentation

mc share upload

Syntax

The mc share upload command generates a temporary presigned URL with integrated access credentials for uploading objects to a MinIO bucket. The temporary URL expires after a configurable time limit.

Applications can perform a PUT to upload an object using the URL.

For more information on shareable object URLs, see the Amazon S3 documentation on Pre-Signed URLs.

The following command generates a new presigned upload URL for the mydata bucket on the myminio MinIO deployment:

mc share upload --recursive myminio/mydata

The command has the following syntax:

mc [GLOBALFLAGS] share upload         \
                 [--expire "string"]  \
                 [--recursive]        \
                 ALIAS
  • Brackets [] indicate optional parameters.

  • Parameters sharing a line are mutually dependent.

  • Parameters separated using the pipe | operator are mutually exclusive.

Copy the example to a text editor and modify as-needed before running the command in the terminal/shell.

Parameters

ALIAS

Required The alias of a MinIO deplyment and the full path to the object for which to generate an upload URL. For example:

mc share upload play/mybucket/object.txt

You can specify multiple objects on the same or different MinIO deployments. For example:

mc share upload play/mybucket/object.txt play/mybucket/otherobject.txt

If specifying the path to a bucket or bucket prefix, you must also specify the --recursive argument. For example:

mc share upload --recursive play/mybucket/

mc share upload --recursive play/mybucket/myprefix/
--expire, E

Optional Set the expiration time limit for all generated URLs.

Specify a string with format ##h##m##s format. For example: 12h34m56s for an expiry of 12 hours, 34 minutes, and 56 seconds after URL generation.

Defaults to 168h or 168 hours (7 days).

--recursive, r

Optional Modifies the CURL URL to support uploading objects to a bucket or bucket prefix. Required if any ALIAS specifies a path to a bucket or bucket prefix. The modified CURL output resembles the following:

curl ... -F key=<NAME> -F file=@<FILE>

Replace <FILE> with the path to the file to upload.

Replace <NAME> with the object name once uploaded. This may include prefixes.

Global Flags

This command supports any of the global flags.

Examples

Generate a URL to Upload Object(s)

Use mc share upload to generate a URL that supports POST requests for uploading a file to a specific object location on a MinIO deployment:

mc share upload --expire DURATION ALIAS/PATH
  • Replace ALIAS with the alias of the MinIO deployment.

  • Replace PATH with the path to the object on the MinIO deployment.

  • Replace DURATION with the duration after which the URL expires. For example, to set a 30 day expiry, specify 30d.

Use mc share upload with the --recursive and --expire options to generate a temporary URL that supports POST requests for uploading files to a bucket on a MinIO deployment:

mc share upload --recursive --expire DURATION ALIAS/PATH
  • Replace ALIAS with the alias of the MinIO deployment.

  • Replace PATH with the path to the bucket or bucket prefix on the MinIO deployment.

  • Replace DURATION with the duration after which the URL expires. For example, to set a 30 day expiry, specify 30d.

The command returns a CURL command for uploading an object to the specified bucket prefix.

  • Replace the <FILE> string in the returned CURL command with the path to the file to upload.

  • Replace the <NAME> string in the returned CURL command with the name of the object in the bucket. This may include prefixes.

You can use a shell script loop to recursively upload the contents of a filesystem directory to the S3-compatible service:

#!/bin/sh

for file in ~/Documents/photos/
do
   curl https://play.min.io/mybucket/ \
   -F policy=AAAAA -F x-amz-algorithm=AWS4-HMAC-SHA256 \
   -F x-amz-credential=AAAA/us-east-1/s3/aws4_request \
   -F x-amz-date=20200812T202556Z \
   -F x-amz-signature=AAAA \
   -F bucket=mybucket -F key=photos/${file} -F file=@${file}

done

This example will upload each file in the directory ~/Documents/photos/ to the mybucket bucket under the prefix photos. Defer to the documented best practices for your preferred scripting language for iterating through files in a directory.

Behavior

S3 Compatibility

The mc commandline tool is built for compatibility with the AWS S3 API and is tested with MinIO and AWS S3 for expected functionality and behavior.

MinIO provides no guarantees for other S3-compatible services, as their S3 API implementation is unknown and therefore unsupported. While mc commands may work as documented, any such usage is at your own risk.