Comments (9)
Hey @DongnutLa have you tried passing the buffer into the end method? I'm not terribly familiar with the stream API but it's worked for me before. Here's a svelte example https://github.com/cloudinary-community/cloudinary-examples/blob/main/examples/sveltekit-image-upload/src/routes/%2Bpage.server.js#L34
from cloudinary_npm.
Hey @DongnutLa have you tried passing the buffer into the end method? I'm not terribly familiar with the stream API but it's worked for me before. Here's a svelte example https://github.com/cloudinary-community/cloudinary-examples/blob/main/examples/sveltekit-image-upload/src/routes/%2Bpage.server.js#L34
Yeah, I have already tried that, but I'm getting the same error
from cloudinary_npm.
Hi @DongnutLa,
Perhaps you can also try something along the lines of:
let cloudinary = require("cloudinary").v2;
let streamifier = require('streamifier');
let uploadFromBuffer = (req) => {
return new Promise((resolve, reject) => {
let cld_upload_stream = cloudinary.v2.uploader.upload_stream(
{
folder: "foo"
},
(error: any, result: any) => {
if (result) {
resolve(result);
} else {
reject(error);
}
}
);
streamifier.createReadStream(req.file.buffer).pipe(cld_upload_stream);
});
};
let result = await uploadFromBuffer(req);
You can find more examples here as well.
Hope you find it useful.
Regards,
Wissam
from cloudinary_npm.
@DongnutLa i wasn't quite able to get your repo moving "as is" since there was no UI to work from, however
- I commented out the mimetype and filesize check
- I updated
const buffer ...
toconst buffer = new Uint8Array(arrayBuffer);
- you don't have your
console.error
inside of theif ( err )
check so its going to show up regardless - i removed
stream.write
and instead am usingstream.end(buffer)
and with that i was able to successfully post an image file using formdata from the client
see this PR i set on your reproduction repo: https://github.com/DongnutLa/cloudinary-next13/pull/1/files
from cloudinary_npm.
oh and important to note, i was never able to reproduce the error you were seeing for some reason...
however i was getting:
[UPLOAD ERROR] TypeError: Cannot read properties of null (reading 'split')
which i think is related to the mimetype code, hence me commenting it out
from cloudinary_npm.
Hi @DongnutLa,
Perhaps you can also try something along the lines of:
let cloudinary = require("cloudinary").v2; let streamifier = require('streamifier'); let uploadFromBuffer = (req) => { return new Promise((resolve, reject) => { let cld_upload_stream = cloudinary.v2.uploader.upload_stream( { folder: "foo" }, (error: any, result: any) => { if (result) { resolve(result); } else { reject(error); } } ); streamifier.createReadStream(req.file.buffer).pipe(cld_upload_stream); }); }; let result = await uploadFromBuffer(req);
You can find more examples here as well.
Hope you find it useful. Regards, Wissam
It works in development mode, but in a production build fails
from cloudinary_npm.
@DongnutLa i wasn't quite able to get your repo moving "as is" since there was no UI to work from, however
- I commented out the mimetype and filesize check
- I updated
const buffer ...
toconst buffer = new Uint8Array(arrayBuffer);
- you don't have your
console.error
inside of theif ( err )
check so its going to show up regardless- i removed
stream.write
and instead am usingstream.end(buffer)
and with that i was able to successfully post an image file using formdata from the client
see this PR i set on your reproduction repo: https://github.com/DongnutLa/cloudinary-next13/pull/1/files
I check your changes, but in production build it's still failing
Did you built the app and tried with next start
? Because in development mode it works well, but in production I'm getting the same 500 error.
from cloudinary_npm.
@DongnutLa if that works in dev mode, try to search for differences between your production and dev environment setups.
from cloudinary_npm.
hey @DongnutLa i put together this example:
i deployed it on Vercel and it worked as expected
because it didnt include the same options, I also created a separate test just to make sure
i also had no problems with uploading through this mechanism
one thing i did hit was a similar error when trying to upload a file that was too big. this could come from a few different places
though notice the error response
serverless functions have a body size limit: https://vercel.com/guides/how-to-bypass-vercel-body-size-limit-serverless-functions
there are also file size limits depending on your plan from Cloudinary, but higher than that amount: https://support.cloudinary.com/hc/en-us/articles/202520592-Do-you-have-a-file-size-limit-#:~:text=On%20our%20free%20plan%2C%20the,also%20limited%20to%2010%20MB.
where are you deploying your application? the only other consideration is if you're using the vercel Edge runtime but i don't see any configuration in your example using such, as I believe the Node SDK wouldn't be supported there at this time
from cloudinary_npm.
Related Issues (20)
- Folder parameter don't work HOT 4
- Time to Remove Node.js 6 support
- Remove the Node.js 6 support HOT 1
- Custom Analytics IDs Don't Produce Custom Code HOT 1
- Wrong response type from https://api.cloudinary.com/v1_1/<cloud>/auto/upload HOT 4
- Webpack on nextjs always throws depency warnings HOT 27
- Cloudinary API corrupts UTF-8 public IDs/file names HOT 2
- When will Cloudinary support node 18 or a later version? HOT 6
- Invalid signature HOT 2
- Error while uploading profile image Cannot read properties of undefined (reading 'path') HOT 1
- Property 'next_cursor' does not exist on type 'ResourceApiResponse' HOT 2
- Missing`upload_stream` documentation HOT 6
- Escaping overlay text seems impossible in the version 1.41.0 HOT 6
- Support passing in analytics product version to URL generation HOT 2
- Typescript error on search API HOT 2
- Invalid signature String to sign HOT 2
- Cloudinary.com Signup Process HOT 3
- Missing return types on v2.api.resources() HOT 4
- Uploading file as buffer does not works in production. HOT 17
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cloudinary_npm.