# Difficulty starting with AWS S3 Multipart

**URL:** <https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081>\
**Category:** Uppy\
**Created:** [October 9, 2019, 10:35am UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081 "2019-10-09T10:35:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![stephenb](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/stephenb/32/173_2.png) [@stephenb](https://community.transloadit.com/u/stephenb)\
**Post date:** [October 9, 2019, 10:35am UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081/1 "2019-10-09T10:35:48Z")

</div>

I’m struggling to get started with figuring out how to use Uppy to upload to S3 using multipart.

My site is using Laravel and ideally I want to use Laravel Envoy (serverless hosting) which means large uploads must go directly to S3 (some of my uploads are multi GB - will this work or are there issues with such large files?).

I can see that the companion URL is used to provide Uppy with the signed S3 upload URL and to interface somehow with the AWS api to handle the multi-part process, but I’m really struggling with how this lot pieces together.

I’m guessing, in my instance, something on the server side that responds to various calls from the client side? But what are those calls and what does the response look like?

Are there any examples I can browse somewhere that offer some pointers?

---

<div class="post-metadata">

**Author:** ![goto-bus-stop](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/goto-bus-stop/32/18_2.png) [@goto-bus-stop](https://community.transloadit.com/u/goto-bus-stop)\
**Post date:** [October 9, 2019, 10:50am UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081/2 "2019-10-09T10:50:29Z")

</div>

Yea, you can use Companion (but probably not on Envoy, since it’s a node app and not well suited for serverless), or implement some HTTP endpoints yourself and point Uppy to those instead. Github user janko described the process in this issue: [https://github.com/transloadit/uppy/issues/1189#issuecomment-445521442](https://github.com/transloadit/uppy/issues/1189#issuecomment-445521442)  
You can either implement your endpoints to work with the same API as the Companion endpoints, and then you can do:

```auto
uppy.use(AwsS3Multipart, { companionUrl: '/your-server/' })

```

Or do some custom implementation on the server and override all the functions in the S3 Multipart plugin options: [https://uppy.io/docs/aws-s3-multipart/#createMultipartUpload-file](https://uppy.io/docs/aws-s3-multipart/#createMultipartUpload-file)

---

<div class="post-metadata">

**Author:** ![stephenb](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/stephenb/32/173_2.png) [@stephenb](https://community.transloadit.com/u/stephenb)\
**Post date:** [October 12, 2019, 2:02pm UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081/3 "2019-10-12T14:02:51Z")

</div>

OK, thanks.

Unfortunately I’m really struggling with this. I think I need to see some example code to help me understand how to get this working. At the moment, I’m completely lost!

If I understand this correctly, there’s several elements to this.

Uppy needs to exist on the page in the clients browser and it needs to make various callbacks to the backend - firstly to get authority to begin the upload and then various other callbacks during the upload to manage things like progress and presumably to store some details about the parts uploaded.

Once the upload is complete, the aws api needs to be called to stitch this lot back together.

At the moment, I cannot get my head around how these calls are structured on the clientside and I’m unsure what my backend should be providing.

If there are any code examples anywhere that give just the slightest hit of how this might work, that would help.

(Oh and I meant Laravel Vapor - the new laravel serverless environment) not Envoyer. I imagine a lot of people may be looking for a similar solution to me. If not immediately, then soon!

Any help is greatly appreciated.

---

<div class="post-metadata">

**Author:** ![westcoastsuccess](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/westcoastsuccess/32/182_2.png) [@westcoastsuccess](https://community.transloadit.com/u/westcoastsuccess)\
**Post date:** [November 26, 2019, 1:03am UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081/4 "2019-11-26T01:03:50Z")

</div>

Sorry for the late reply, but you may find some detailed instructions I posted [here](https://community.transloadit.com/t/uppy-aws-s3-pre-signed-url-nodejs-complete-example-including-metadata-and-tags/15137) helpful - it uses the AWS S3 plugin, rather than the AWS S3 Multipart plugin, but it may point you in the right direction insofar as the logic goes. Hope it helps!

---

<div class="post-metadata">

**Author:** ![andreia](https://yyz2.discourse-cdn.com/flex032/user_avatar/community.transloadit.com/andreia/32/390_2.png) [@andreia](https://community.transloadit.com/u/andreia)\
**Post date:** [March 11, 2021, 8:25am UTC](https://community.transloadit.com/t/difficulty-starting-with-aws-s3-multipart/15081/5 "2021-03-11T08:25:38Z")

</div>

In case anyone needs it, this Laravel package was just added:

> **[TappNetwork/laravel-uppy-s3-multipart-upload](https://github.com/TappNetwork/laravel-uppy-s3-multipart-upload)**
>
> Multipart Uploads using Laravel, AWS S3, and Uppy. Contribute to TappNetwork/laravel-uppy-s3-multipart-upload development by creating an account on GitHub.
