Hopefully this meets the current voice standards for docs. Main changes are clarification of language around file vs. object and syntax fixes for uploads. --------- Co-authored-by: Ravind Kumar <ravind@min.io>
6.2 KiB
mc share upload
minio
Table of Contents
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
<AmazonS3/latest/dev/ShareObjectPreSignedURL.html>.
EXAMPLE
The following command generates a new presigned upload URL for the
mydata bucket on the myminio MinIO
deployment:
mc share upload --recursive myminio/mydata
SYNTAX
The command has the following syntax:
mc [GLOBALFLAGS] share upload \
[--expire "string"] \
[--recursive] \
ALIAS
Parameters
ALIAS
Required The alias <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 ~mc share upload --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 <prefix>.
Global Flags
Examples
Generate a URL to Upload Object(s)
Upload Single Object
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 <mc share upload ALIAS>with thealias <alias>of the MinIO deployment. - Replace
PATH <mc share upload ALIAS>with the path to the object on the MinIO deployment. - Replace
DURATION <mc share upload --expire>with the duration after which the URL expires. For example, to set a 30 day expiry, specify30d.
Upload Multiple Objects
Use mc share upload
with the ~mc share upload --recursive and ~mc share upload --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 <mc share upload ALIAS>with thealias <alias>of the MinIO deployment. - Replace
PATH <mc share upload ALIAS>with the path to the bucket or bucket prefix on the MinIO deployment. - Replace
DURATION <mc share upload --expire>with the duration after which the URL expires. For example, to set a 30 day expiry, specify30d.
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 includeprefixes <prefix>.
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.