---
agentTools:
  projectIndex: https://developer.clearslide.com/llms.txt
---

# Upload File to Amazon S3

[block:api-header]
{
  "title": "How do I upload a file to Amazon S3?"
}
[/block]

After getting the file upload credentials, as described in [Upload File Credentials API Overview](https://developer.clearslide.com/docs/upload-api-overview-1), we need to use postParams and postURL from the response of Upload File Credentials API in order to upload a file from local machine to Amazon S3. Here is a python script that does it:

[block:code]
{
  "codes": [
    {
      "code": "import sys\nimport requests\nfrom mimetypes import MimeTypes\nimport urllib\n\n# Absolute path of the file to be uploaded nneds to be provided as an argument while executing this python script\nfilePathAndName = sys.argv[1]\nfileName = filePathAndName.split('/')[-1]\n\n# Use the postParams from the response of upload file credentials API in the previous step\npostParams = {\"AWSAccessKeyId\": \"AKIAJVHMPPPB2CQJZOVQ\",\"acl\": \"private\",\"key\": \"prod/VZ2PM6C8UAL73D2S8VSR/source\",\"policy\": \"eyJleHBpcmF0aW9uIjogIjIwMTctMDktMjFUMjM6MjM6MjcuMDAwWiIsICJjb25kaXRpb25zIjogW3siYnVja2V0IjogInVwbG9hZC1idWNrZXQtaW50In0sIHsiYWNsIjogInByaXZhdGUifSwgWyJzdGFydHMtd2l0aCIsICIka2V5IiwgImludGVncmF0aW9uL1ZaMlBNNkM4VUFMNzNEMlM4VlNSLyJdLCB7IngtYW16LW1ldGEtbWFuYWdlSG9zdCI6ICJRWEVCaUlrRThra3Q2OVp0dnVtWXVSNDZNZktNV2d6WTkzTUJzY1VEMjJIdXpGUW54V3doY3lNcnlSQW5lSGw3ajhaQ2RSUWRrOGFiZXp2WFpVZlhzZDQ1NVBDVDhRcWc4VmR0WmhYaTEtWWR0elVUaDNkYmI2T1pfS0Vld3RjY243eGl5Qm1sM0RNNUs5RFdxanJvbWpieEJZN0dyMHNWVDFZU21vNG8yYkxiS3lmdkpoV0FScjUyc0RjdF83ODl3UjZVOVdmajdqWmJfd3o2VWRzVUwxM1ViRjEwRWVKb29LNzVuVTJsQlhaZ2ZlbGYyNXZUaVZnRCJ9LCB7IngtYW16LW1ldGEtdXNlclZJRCI6ICJxRDVrX0RWOTNEckRXRDgxbWR1cUQwM09aSVJJMXdUZXJHcWNyMlpHcjVLeWNFT3VMZ21PY2xyRG1Yd0RrRkFLNDJxSnBjbi00cThzVVlrVTN2UHFaTG5qSk9DV0VzOFdxQVdVbEItNk9IdmlzWTJIamxCRUdpMDhYd1ZIOHhtcmdDQng0TVFhVDYwTjNtWDZFMWxRRWtFbzctdnJ0R2hSemZyb092VkFaYWQ1WkxVWHh6SkFnN2ZwY0V6UkdzV1ZBVFBwWEVvSnA2eDh6YlRqQl9INGQzSzZwV1NPcGw1blRBZ1gifSwgeyJ4LWFtei1tZXRhLWZpbGVuYW1lIjogIlRKTy1fSEFET0VHTkNPbG5fWGdxYlZXT3lidnlUbTdMSldadkRFVzZhNTgtbW5EUkZPM1dQRFZVclBiZDNGYU1lVm15SDhramN0S3drV2hRZ2M3MHl3RzZxT1dYZkNyRlEzR1BsTDNaUWRTaF85cUxpZkxVaTRLVUpsdzNvRUNBSU5FeXNYVnpXa2ZJQWNnUUtVZlkxYlpGVlR6RjlzZDFMTUo1UFoxS1VSZGZ0WUc0Vk56QlIzZzhQUVBYNExJN0RHWFh4YmhENElDYlZrSWhEYm55c2RLdlZjdmo0M19wNUtNNzJRIn0sIHsieC1hbXotc2VydmVyLXNpZGUtZW5jcnlwdGlvbiI6ICJBRVMyNTYifSBdfQ==\",\"signature\": \"l9FRsuYHFcmoQzVi8+oA4nL3Tlk=\",\"x-amz-meta-filename\": \"TJO-_HADOEGNCOln_XgqbVWOybvyTm7LJWZvDEW6a58-mnDRFO3WPDVUrPbd3FaMeVmyH8kjctKwkWhQgc70ywG6qOWXfCrFQ3GPlL3ZQdSh_9qLifLUi4KUJlw3oECAINEysXVzWkfIAcgQKUfY1bZFVTzF9sd1LMJ5PZ1KURdftYG4VNzBR3g8PQPX4LI7DGXXxbhD4ICbVkIhDbnysdKvVcvj43_p5KM72Q\",\"x-amz-meta-manageHost\": \"QXEBiIkE8kkt69ZtvumYuR46MfKMWgzY93MBscUD22HuzFQnxWwhcyMryRAneHl7j8ZCdRQdk8abezvXZUfXsd455PCT8Qqg8VdtZhXi1-YdtzUTh3dbb6OZ_KEewtccn7xiyBml3DM5K9DWqjromjbxBY7Gr0sVT1YSmo4o2bLbKyfvJhWARr52sDct_789wR6U9Wfj7jZb_wz6UdsUL13UbF10EeJooK75nU2lBXZgfelf25vTiVgD\",\"x-amz-meta-userVID\": \"qD5k_DV93DrDWD81mduqD03OZIRI1wTerGqcr2ZGr5KycEOuLgmOclrDmXwDkFAK42qJpcn-4q8sUYkU3vPqZLnjJOCWEs8WqAWUlB-6OHvisY2HjlBEGi08XwVH8xmrgCBx4MQaT60N3mX6E1lQEkEo7-vrtGhRzfroOvVAZad5ZLUXxzJAg7fpcEzRGsWVATPpXEoJp6x8zbTjB_H4d3K6pWSOpl5nTAgX\",\"x-amz-server-side-encryption\": \"AES256\"}\npostURL = \"https://upload-bucket-int.s3.amazonaws.com/\"\n\nmime = MimeTypes()\nurl = urllib.pathname2url(filePathAndName)\nmimeType = mime.guess_type(url)\n \nfiles = [('file',(fileName, open(filePathAndName, 'rb'), mimeType))]\n \nuploadRes = requests.post(postURL, data=postParams, files=files)\nprint uploadRes",
      "language": "python",
      "name": "upload_file_to_s3.py"
    }
  ]
}
[/block]

[block:api-header]
{
  "title": "How do I run this python script ?"
}
[/block]

You will need to provide absolute path of your local file in order to upload a file to Amazon S3 as shown in the code snippet below.

[block:code]
{
  "codes": [
    {
      "code": "python ./upload_file_to_s3.py /Users/name/Desktop/test.png",
      "language": "shell",
      "name": "upload_file_to_s3"
    }
  ]
}
[/block]

[block:api-header]
{
  "title": "What is the expected output from running this python script ?"
}
[/block]

It takes \~3 seconds to upload a file to Amazon S3. If the file upload is successful, you will see the following output:

[block:code]
{
  "codes": [
    {
      "code": "<Response [204]>",
      "language": "text",
      "name": "upload_file_to_s3_output"
    }
  ]
}
[/block]