Is there a tool to upload direct to Storj from my browser client?

Hi Guys, I just Want to know if there is a package that can be used from my react app to upload files from the browser client without a backend service(or node to be precise).
Thanks

Welcome @Prometheus to our community.

Unfortunately, there isn’t any because the Storj network is decentralized and the native protocol requires the client to send the data directly to the storage nodes rather than to a central server.

You may wonder, how we do it through the object browser that you see in your satellite account. If I’m not mistaken (some of my mates who know more about this topic could correct me in a future comment), we do it as you guessed, our Satellite acts as a backend server that receives the data and then sends each piece to the corresponding storage node.

Alternatively, you could use our hosted S3 gateways to upload data and they would upload the pieces to the storage nodes, however, you’ll need to find a browser library (javascript) that allows uploading data to an S3 backend.

2 Likes

AFAIK satellite UI uses S3 protocol, satellite backends are metadata only services.

Here is the aws sdk which is used by our UI (but any other S3 compatible JS library should work as well):

“@aws-sdk/signature-v4”: “3.78.0”,

It’s initialized and used in this file.

The only Storj specific part is the secret handling.

As a reminder: native Storj upload (which is not supported from the browser) requires an access grant (includes the API key + the encryption secret).

This can be registered in exchange of AWS key/secrets with uplink --share

Our UI uses a small web assembly library to handle secret handling and access grant derivation…

5 Likes

I do this with my app.

The easiest way is to leverage the S3 gateway and create signed URLs which the browser then uses to upload the files.

The easiest way to grok this process is to search for one of the millions of tutorials on how to do this online. The implementation is identical for Storj as it is for AWS’ S3 product.