{"id":39510162,"url":"https://github.com/codingforentrepreneurs/dive-into-aws-course---direct-to-s3-via-django-javascript","last_synced_at":"2026-01-18T06:01:23.156Z","repository":{"id":47224634,"uuid":"162079504","full_name":"codingforentrepreneurs/Dive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript","owner":"codingforentrepreneurs","description":"In this section, we'll be implementing our Reusable Boto3 Utility (https://cfe.sh/courses/aws/reusable-boto3-utility) to implement secure direct to S3 uploads as well as secure downloads via Django \u0026 JavaScript.","archived":false,"fork":false,"pushed_at":"2022-12-08T01:31:30.000Z","size":1888,"stargazers_count":30,"open_issues_count":4,"forks_count":18,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-03-15T19:57:59.630Z","etag":null,"topics":["aws","boto3","django","download","javascript","reusable-boto3-utility","s3","upload"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingforentrepreneurs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-17T05:33:00.000Z","updated_at":"2023-08-21T14:55:54.000Z","dependencies_parsed_at":"2023-01-24T21:00:10.810Z","dependency_job_id":null,"html_url":"https://github.com/codingforentrepreneurs/Dive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codingforentrepreneurs/Dive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2FDive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2FDive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2FDive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2FDive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingforentrepreneurs","download_url":"https://codeload.github.com/codingforentrepreneurs/Dive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingforentrepreneurs%2FDive-into-AWS-Course---Direct-to-S3-via-Django-JavaScript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28531991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","boto3","django","download","javascript","reusable-boto3-utility","s3","upload"],"created_at":"2026-01-18T06:01:22.483Z","updated_at":"2026-01-18T06:01:23.151Z","avatar_url":"https://github.com/codingforentrepreneurs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Direct to S3 via Django \u0026 JavaScript\nIn this section, we'll be implementing our [Reusable Boto3 Utility](https://cfe.sh/courses/aws/reusable-boto3-utility) to implement secure direct to S3 uploads as well as secure downloads via Django \u0026 JavaScript.\n\n\n### Lesson Code\n\n[1 - Copy Section 5 Code](../../tree/7907a9f36f352bc5cd3996b6ca5dc0fbd3603125/)\n\n[2 - Integrate Custom Boto3 Utility](../../tree/850c18dba1d957189456172146ada61381bdc171/)\n\n[3 - AWS Config in Settings](../../tree/b89c4226902ac00617b5cfd26a96ab39e297c33c/)\n\n[4 - AWS Config TestCase](../../tree/ad60c32ba3128fa52e40d2bbc806c3ed321f6d69/)\n\n5 - Advantages of using Django to manage S3 files _No New Code_\n\n[6 - S3 File Model](../../tree/dd8bfd954c518e3aba584825af67afec37ab03c9/)\n\n[7 - Why not FileField or ImageField](../../tree/0aefde77ee7722a26825fe3d2e3da616046d613f/)\n\n[8 - Download URL Instance Method](../../tree/c5c7c62e1fb894738690987a29913be78c714f69/)\n\n[9 - Download File View](../../tree/8bf7ad5157f8de048887c4d37adc29f70f06b692/)\n\n[10 - Force Download via Custom Boto3 Client](../../tree/c616ec8310e291cc965f2244554a57da3547f445/)\n\n[11 - Downloading a Custom Filename](../../tree/9cddd91e7b41fd8faae6c62ea70ba237e0ed2eac/)\n\n[12 - Setup Upload Template View](../../tree/6804334a16cdaffce187945863992764e73c94ab/)\n\n[13 - Signed S3 Upload Policy via URL Endpoint](../../tree/9a2fe92352446a8a7d7b7e8c277f1cb45bcea0f1/)\n\n[14 - S3 Direct via Python](../../tree/76800093c0f9af9ab27305dc6e9a484c4caa341c/)\n\n[15 - Policy via HTTP POST Method](../../tree/ada94d370c22476ba60ae1e47e44aea3894a2f14/)\n\n[16 - CSRF Exempt for Testing](../../tree/8910433818a7d8ed5d1675d1e000fe8e8ec8f162/)\n\n[17 - Django Model Managing S3 Keys](../../tree/9674e6132e4a6e3e8e78a9126cc23f3ca127f152/)\n\n[18 - Additional Client-side Data for S3 File](../../tree/b629ce9a3d65f3abfa0f01075f4bd29dc2ea9389/)\n\n[19 - Update Backend on Successful Upload](../../tree/f392d197439ef897c4675128b5e661299fda68e3/)\n\n[20 - Django Rest Framework Serializer Validation](../../tree/70d3e16e66337ccddd650b0f8b57af4e2514f922/)\n\n[21 - Saving a Model Serializer](../../tree/2365efa4b8878e68609b6a818f52e6e5b4718868/)\n\n[22 - JSON for HTTP Methods.](../../tree/f693aabbbd5603b4f530fb8ad83dad1f68edd21b/)\n\n[23 - Upload Policy View as DRF](../../tree/840a7a3cdbde3277553934aabba1ae1cd7c7bed7/)\n\n[24 - Create API View and Invalid Data](../../tree/5fd45fb25aa558642816056b88848bf13d05edae/)\n\n[25 - Html Upload Form](../../tree/c5bb5869762c561c8be4a474dec35913792dd0f5/)\n\n[26 - Raw Javascript Upload - Files List From Input](../../tree/38b570a78847794867872af284cdf22c73e682e2/)\n\n[27 - Display Items to be Uploaded](../../tree/314401ca05d6143a6b56a94b8aaf8ea633e3ae8b/)\n\n[28 - Raw Javascript Upload - Verify File Type](../../tree/c22c02058e51e3cf9bc1ef7d119d9880b7df4275/)\n\n[29 - Raw Javascript Upload - File Policy via XML Http Request](../../tree/ed41510938c279b7aa5b5731885880bc2c4a2d71/)\n\n[30 - Raw Javascript Upload - new FormData](../../tree/ed41510938c279b7aa5b5731885880bc2c4a2d71/)\n\n[31 - Raw Javascript Upload - Iterate through Dictionary to Generate Form Data](../../tree/d365eb86f4ae66e54261663b9dc8258a2c8c0240/)\n\n[32 - Raw Javascript Upload - Direct to S3](../../tree/5939203e08fc509ce7121cd41928a0a199698915/)\n\n[33- Raw Javascript Upload - Upload Progress](../../tree/53416c60aacc607afbc98ea36ece0eb99499e1f2/)\n\n[34 - Raw Javascript Upload - Update Django](../../tree/3011f873f3fd26f349eeb51cd3bb5c420cf20738/)\n\n[35 - Update Upload Policy View for Multiple Files](../../tree/fd29e62624c1c103d4182bd89dedf4933d208f63/)\n\n[36 - View Progress on HTML](../../tree/0798b20b09b046fa8df9e536fe62b47ad943d1ec)\n\n[37 - User Login Required](../../tree/3c46f19ab1071ca31a46b40ff420e0ce5534eac9)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingforentrepreneurs%2Fdive-into-aws-course---direct-to-s3-via-django-javascript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingforentrepreneurs%2Fdive-into-aws-course---direct-to-s3-via-django-javascript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingforentrepreneurs%2Fdive-into-aws-course---direct-to-s3-via-django-javascript/lists"}