Submit an image to Digital Ocean Space with Expo

I have been attempting to utilize the output image from the takePictureAsync function and upload it to a Digital Ocean Space using Expo. The uploading process with signed PUT URL appears to be functioning correctly, but I am encountering issues during the encoding stage. Here is the relevant code snippet:

const pictureResponse = await camera.current.takePictureAsync({ base64: true });

const spacesBase64 = `data:image/png;base64,${pictureResponse.base64}`;
const spacesBuffer = Buffer.from(spacesBase64, "base64");
const spacesBlob = new Blob([spacesBuffer]);
const spacesFile = new File([spacesBlob], "test.jpg", { type: "image/jpeg" });

fetch(`https://signedputurl.com`, { method: 'PUT', body: spacesFile });

After taking a picture, it is successfully displayed on my Digital Ocean Space and the file size appears correct. However, when trying to preview the URL, it does not render properly. Despite removing the data:image/png;base64 prefix, the issue persists.

The image result has been made public and can be viewed at . Perhaps this will provide some insight into the problem.

Answer №1

After some exploration, I found a new approach! Instead of converting the base64 data back to a blob, I realized that I could simply make a fetch request to retrieve the blob from cache.

const photoResponse = await camera.current.takePhotoAsync();

const response = await fetch(photoResponse.uri);
const blobData = await response.blob();

fetch(`https://signedputurl.com`, { method: 'PUT', body: blobData });

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Trouble with Mangoose Nested Find Functionality

Here is the model I am working with: UserModel = mongoose.Document & { username: string, password: string, records: Record[] }; Record: { name: string; date: Date; } My current query snippet is as follows: const date = new Da ...

The Node.js Express server does not provide access to certain static files

I am currently utilizing the angularjs-gulp-browserify-boilerplate for my development environment on Windows 10. Once I run gulp in dev mode, static files are moved to the build directory: ./build |_js |_css |_img |_fonts |_lang In additio ...

Can JSON encoding in a URL pose a risk of XSS attacks?

To ensure my application has URL-friendly capabilities, I am storing its context as a JSON within the URL. This results in something like: http://mysite.dev/myapppage/target#?context={%22attr1%22%3A{%22target_id-0%22%3A{%22value%22%3A%223%22%2C%22label%2 ...

Becoming an expert at managing and solving dependency conflicts

I am facing an issue while setting up a project from my work computer to my home computer due to fixed dependency versions. Here are the dependencies causing the problem: "dependencies": { "@nestjs-modules/mailer": "2.0.2&qu ...

The error message `Error [ERR_REQUIRE_ESM]: require() of ES Module` is triggered when attempting to call the old

I've been attempting to integrate with the Unsplash API, but I'm encountering an issue. When I try to execute the script using ts-node like this: ts-node unsplash.ts I receive the following error: C:\Users\USER\AppData\Roamin ...

What is the proper method for securing this?

Trying to retrieve 'this' within a method that is invoked by pressing a button, where this points to both the class and the pressed button: p.myVar = 'apple'; $('.go').on('click', this._init); p._init = function(e ...

Displaying data from a table in a modal window using getSelected in Bootstrap-table

I am currently utilizing bootstrap and bootstrap-table, and I have a requirement to display the data of the selected item in a modal window. When I retrieve the information of the selected item: Here is my JavaScript code: var $table = $('#tableprod ...

Retrieving data from a promise in a Node API when making a fetch call in React

Currently, I am developing a React application that interacts with a Node/Express REST API located on my local machine. The API responds with a Sequelize object via a simple res.json call, which I am accessing through a custom service. While I plan to stor ...

What steps are needed to troubleshoot and resolve issues with integrating Google reCaptcha in an AWS Lambda

I'm encountering an issue with my lambda function which is intended to validate google recaptcha. Despite sending the correct data (the response) from the client, I consistently receive a console message stating "verification failed". Below is the cod ...

An error message pops up when using Next.js with Sass, indicating that a suitable loader is required to handle this file type

I've been struggling to properly wire up my next.js project with SCSS, but no matter what I try, it just won't work. I double-checked my setup for compiling SCSS files, but the error message keeps popping up: /scss/style.scss 1:0 Module parse f ...

Utilizing jQuery to target elements that are dynamically generated upon successful AJAX response

When handling dynamically created elements on ajax success, I encountered an issue. I have multiple checkboxes within a table and when the table content is replaced on ajax success, I am unable to select any new checkbox. While it is possible to trigger cl ...

What is causing the Maximum call stack size exceeded error to occur without using .val()?

Can anyone help me figure out why I am getting the error message "Uncaught RangeError: Maximum call stack size exceeded" when trying to implement a follow feature using the follow button? Adding .val() to Meteor.users.update(Meteor.userId(), {$addToSet: {& ...

Increase the spacing between the column label and the x-axis label in a c3 chart

Take a look at the chart below, I'm attempting to create some additional spacing between the column labels and the x-axis label. https://i.sstatic.net/R7zqN.png I experimented with adding this CSS style: text.c3-axis-x-label { margin-top: 10 ...

Passing parent props to child components in Vue.js - A comprehensive guide!

Trying to understand the process of passing a prop from parent to child components. If I include the prop attribute with the #id within the child component tag, like Image cid="488484-49544894-584854", it functions correctly. However, I am interested in u ...

One method of dirty checking using a shared service among controllers is effective, while the other method is not successful

As I was trying to solve the problem of sharing data between two separate controllers, I encountered a curious issue. Usually, I rely on services for this task and started creating a jsfiddle example, but unfortunately, I couldn't get it to function ...

Unlocking elements in Vue.js through functions

Looking to dynamically add a class to the label element when focusing on an input element below it. The current HTML and JS code I'm using is as follows: HTML: <label for="formProductId" ref="productIdLabel" class="form-element-title">Product ...

Unlock the Power of jQuery Hashing with the Addition of Additional Variables

Looking for a way to include an additional variable in a URL like the one above. I've experimented with different methods but I'm not certain which is the most effective. For example: Currently using JQUERY to detect the HASH value: if (window ...

How can you create a basic slideshow without relying on jQuery to cycle through images?

Imagine you have a div containing 3 images. Is there a way to build a basic slideshow that smoothly transitions between the images, showing each one for 5 seconds before moving on to the next one and eventually looping back to the first image without rely ...

Glistening: sending reactiveValues to conditionalPanel

Is it possible to pass a reactiveValues to the condition of a conditionalPanel? If so, what is the correct method? Below is my attempt in the UI.R file for the conditionalPanel: conditionalPanel(condition = "values.cond == 0", etc. I have defined values ...

What steps should I take to ensure that clicking this button triggers the API request and returns the data in JSON format?

I'm attempting to have the button with id 'testp' return an api request in json format, however it seems to not be functioning properly. You can find the HTML code link here: https://github.com/atullu1234/REST-API-Developer-1/blob/main/js-bu ...