Signed Upload S3 Digital Ocean... difference with AWS?

Hi everybody.

I’m trying for the first time Digital Ocean and I created a Spaces (S3 correspondent of AWS) to upload files.

I used the S3 Upload Component but I m getting CORS errors continously.

CORS rules are done as per How-To:


By the way this is the difference between AWS and Digital Ocean:

01_cors
(upload://a73ymdb3PWJZmKws95ubRIgkdzt.png)

This is what Digital Ocean replied to me:

*I see you are creating a presigned URL to do a PUT request with, I’d recommend testing without one to see if the issue persists. In addition one caveat with Ceph (what we use to implement object storage) is that all parameters that the object is signed with also need to be sent in the request to the Space as well.

I’m happy to take an extra review, could you provide the code/configuration of the PHP file as well as the s3upload.js. I’m thinking the JS uploader is not putting the parameters of the signed URL in the PUT request.

I’d also look at the network tab at the failed request and look at the request/response headers directly (or right click and copy all as HAR content).

It may also be following up with the Wappler community further too as some clients/services are built directly for AWS s3. Ceph only replicates the behavior by following s3 specification so there can be some things that don’t work quite the same.

Let us know if the problem persists and those and as many details you can, and we can try to review and replicate this from our end further!*

Any ideas about? some of the @wappler_ambassadors already use Digital Ocean??

Thank you

Roberto

I have tested with digital ocean spaces and didn’t have any issues uploading a file. I actually used it for testing by developing the module and the code is based on a tutorial from digital ocean.

What is the exact error you get from the request to digital ocean and how does the signed url look like? You may strip off the bucket part, I’m only curious to the querystring parameters.

Hi @patrick,
you can check at:

https://hub.aol-lending.com/upload_test.php

If you want to see in the browser console what is happening. As I will back to office I will add the signed URL given by the server connect.

You can make all test as aws, do and b2 S3 are not beaing any important file (just testing at the moment).

When you test the page both for DO and B2 I get:

“Network error, perhaps no CORS set”

I have found the issue, an header was not set correctly.

dmxS3Upload.zip (1.7 KB)

I’m so sorry Patrick, but now I have same problem on AWS too :frowning:

Is this with the new file?

yes. I checked also on the server… it is the new file

I tested your url, it works for me. Clear your browser cache.

Not sure if you changed the server connect action of aws, but it is returning the digital ocean url.

Yes, it is working for me too!!
Thank you very much.

Just last question. If I want to make a signed Download. It is ok if I put a button on the page and on click I run the server connect with signed download?

Just this?

Yes, you can run the server connect on click and then on complete of the server connect you could use the browser component Go To action to trigger the actual download. Alternative you could also use the download component.

“Go to” where? I give the full URL on Spaces?

For non expert like me to download:

  1. Prepare the Server Connect
    Schermata 2020-09-24 alle 16.43.15

  2. add the server connect and the browser component

  3. On Click the button, run the server connect action and then the browser component, with Go To picking value from the value returned by server connect:

Maybe for most of you was natural but I didn’t understand how to use it before !!

1 Like

Fixed in Wappler 3.3.3

1 Like