简体   繁体   中英

Cloudinary image upload using Nodejs not working

I'm trying to upload a base64encoded image to Cloudinary using the following code. However, this code doesn't work. Could you guys suggest to me any solution for this, please? The post request fails with a 500 error.

const uploadProductImage = asyncHandler(async (req, res) => {
  let image = req.body.image;

  const cloudres = await cloudinary.v2.uploader.upload(image);

  console.log(cloudres);
  res.status(200);
});

Not sure if this helps, but here is a working codepen uploading a base64 encoded file.

Update the cloudname and unsigned preset to your information. Refresh the codepen and it will upload into your cloud account.

https://codepen.io/tmero/pen/poeXaPY

const cloudName = 'tessamero';
const unsignedUploadPreset = 'stackoverflowtest';

// Upload base64 encoded file to Cloudinary
uploadFile('data:image/gif;base64,R0lGODlhSAFIAfYAAO0ABe4EDO4ID/AGDu4MFPAOFe4QF+4UG+4YH+4UIe4cI+4dKvAeJe8gJ+8jKvAgJ/AkK/AoL+8tM/AsMu8wNvAwN/E0O/E5P/E8Q/JBR/JFSvJJTvJMUvNRVvNVWvNZXvNWYvNdYvRhZvRlavRpbvRkcPRtcvVxdvV1evV5fvV2gfV9gfaChvaGivaKjfaOkfeSlfiTl/eZlveWmfiXmveanfibnfegnPiinvedoPieofeho/iipfimqfiqrfmusfmytfq6tvm2uPm6vPq/wfrDxfrHyfrLzPrP0PvT1PvX2Pvb3Pzf4Pzj5Pzn6Pzr7Pzw7/3v8P309P349/33+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABIAUgBAAf+gFWCg4SFhoeIiYqLjI2Oj5CRko9TQygYDgqamhQiNEeToaKjpKWmp6ipqquSSScYEw6Zm5sSEhQeNVKsvL2+v8DBwqxMKRgKBrTKmwYHEh9Aw9LT1NXW14tDIQoEy97MBBgwTtjl5ufo6YpSQhgC3/Cb3Svk6vb3+PmqNhPd8f/NRDzRR7CgwYODjkxI9q+hggMidiGcSLHiNCcQDjjceICGRIsgQ4oc9WQEw40NDzgwMrKly5eIhGhEuZEAiiYwc+oEuWSEP5obe+wcSpSgjwRAUQJI8bGo06fWprQIALRBzQxCoGrdKgxJiJ9JGxp4wbWsWVU+LIRFKQDF2bf+cEO9ALs2ngASA+Pq3ZuIBdW6/xoQ6ACKr+HDK/4CjkdAQ9bDkPUm/mZ1MbIM0SJrPuvXcjwDmDeL5trZ87fGQ0arfuqCrml5I/Kunq1zR4TX3gSMaEq798ghHE7i1iSAhe/jLZ+keEezskMJO5BLD5lDOG4BIpRM304RiYaZww3M4E7+oBQYzHEb2ICkvHuCRtK/JtCDyvv795psQID7AIl6+AV4DhU9uIaSc5o4g5OADJrzxAamHWABSw1WiI0QnoXzmIUcVmMBeEAhQIAD0HRoIjUuzEITAslMoMKCJ8YYjBQbGPgPBB0UIeOOwtQgAX/fHCCkAQQcgIELsvH+qGQvT3wgHy0NdJDCD0Ic8YR9S2bpSwtALiPBEANNoeWYvuQgwTcOkEXmmrwIoYGBCFjA5pyqKAfnAVHQqacpP1inCQIHFCHmnoROQkQF8PBW6KKMCHHbMghUwOikjuzwpCYNkEDppoq4AIA3DsTA6aiFPIHCpQh8SeqqVXjlmgEUwMjqpj1c4KcBFWA566YwnHbBrqMu5w0BvwJLqRQhXHqZsZQO8eY3IzA7aQ5qgZqCtIyiAE8DJmC7aAc2OnCtt3tKkYGNFdhA7p5EWOAnMhYItS6dL0TQJS0GxDvvnEJcAE++P+y75hMYvKtJY0kITKYQysrDAYAKK6kciMv+gJZaxEs6ocE/KrmFsZJKqAiPA91+zCMQNtIigZomx/gECyknaEF0Lcd4RAYUV6xvzSf2YDAt4ejIc4dSffoPARwkOXSDSpAQ88EcKLp0gEd88PMm2E3NYQ9npnSC1hbu0PU/DrgAdoU1OJTAzmcLCHNDBGywYdv3LZFsQwJ4oB3d+Jng0AEGuKAr3+U5ce4/CTTQgtKEc6eCyKcV1rh7T1SQ8zIEyDo5dz44cO83FUC8+XY0eN5QCIyPjtwKCAa5gtSq90YFhA0h4FHs3H3wN4W4TxeD6Z/1nvtzwm+3wQINdVC8dFI8Gk8Dxi3vGxU/XK6MAz5I79sTHny+jDP+Tgyu/WhL/K3B+L0N0TAtaaI/mxQ5PE1ABqK7rxkTJFytAAKa2q9aEd5Txtpo5j+RHEEINXgBDGAQgxwMQXOSoIHR4EGAD+ytgBZJwg08YAECACAAAACAkUywgyWEYgkmeJpuUodBgkjBBxgIgIEOQIDBCC0SQPjQ0SLSwokowSfWA1qoIhjETQBgBT1ESBE0oD98lS0SK1ifEaOXRILU4AJF9IZKXAA7QzBBBE9TQANqUEWCFKECTdSiBDiwA/EdYggZ0B/SiFDGfCzhO3VJAAEqwAIwKWIFDhHA6+p4DymkIIytw9wBNIACGjRhUIT4QQXCSAACEjIdQ0jjRoj+FIAW8GYIEkhjAy52SXQ04QRhBMoBMiCrIjggi5u4AO9KaQ4fwDIssRnEEPaHkgrMkpbYaIEU6+IBE1bBlbfchAVuCMxrLIEEw1yLAzbABCd8BSgTamY5gBDH4VSGACwAZFKWqU1s7GACw1FGBSiQTFpUgJnlnEYO0JnOxRgJnvEchg2cV8+1GMADCcsnNfbZT8AYwATGFKg0ejCBABbUIQSIQRcVygvg+CmRD8Wc5Cg6jBVMMKMbQQAGIMjRX/SgLhi1zAFYMNGSrqIJKEglSDVhAHy69BdIiEA7MzqBm05jCj04QEqhBNITQNKnwZgCDQA1U3gkwAEBReowpjD+A2409Rvnk+o0pNCDDl6VFghwAAy0Wg0hBOerB7sASckKDGGiFRkfYCs1nADNt65MrtOAwVALagANZAavwjBBNNNpAAwEDLDByAEFNKkewyIWGDB0KGVMM7/DPrZNGMjiXgGzyuxdlhVDKBhuNrsMCozns6egwhOa0A7G9lNcqD2FEEjgr50WtGSxFUVoDyDZtwpgA7kNBRRa0IDevhUZIw1uJKBQVdc29QAUCIJyISGEUB73OaedLiOaYIKPetMy0dIuI2pA2uv+qVjiTQQVSODdbV23AVFNryFgMDbzNqQBY5WvIZxQI/tuZG1ulK/fvhuYsCBgo/pFgnUXU17+lZ4ACvodxDaM699l/FK8RqBwhZUhgBSwMLdO6N6GgeKAv4qXYSMGigBMUL/cKuEDGk6xMrI73R/IVMby+AATtNuTwfp3qBKgcW6riuOkECAE00UCB3xcZHnQL7hNCEGMm8wMC1j2s1LowJQL7N7nLSZV+UWtChpM5WX077NFKG49yTxaEaB2dlsuMzPQ+1gh3FjO+JLAZ7nr3P0x+a0G0PNljQA5h8SJg32eaaA/S4M/P0QCAfuBZZzDZkx9I6xICLBUUXhnBQigBYKgAgua2gAyp6o9iK0uUAgAggtSQQNxVkalDS0BVOPVCB5grAAAwAFbC8IIEeh0RhEQAV/+k/UJJkCKQwzQgBTkIL6DaIEDEt1PYhtbq9LWJLcgjIgnkCCIs7ZMrfEqBAfIdDAXRMQROkDtdBIb2khdAgWmjABQM2K3GW1wBC58UyiIeJMgQHAiiGDbhwr5pi/bKQHCzIgjhLueDpCXVIWwZZGSkhFFEPZrr11SIzxLKS3Q9CGQwM4NSwDeHDWVoyMgcEVQYQYa98bDNQFVqdJAAolDCQFawO1H+Lvg6Ry3T73z58StdRH89a9KUK7QEcQ65KEgeaxxI3SXpsW5HOi5JKDgrqq8xhlLEHk58ajzCyQ0FF69Lqx8ugM2CwADNo1EB4BOWUGXVAoWmPJvLy6KFfD+E61GEnszd3Dj+fFdFEXAQMw9AwKXJgFR/8UAHVHxgcVb5msclYILmNxrVaTounflaBG6/g/+eKClk7DocSlgyXxSoTV4c8AMBB8KJ4jA0UT1sjcMcIHDlxPXMSOSB4pA+1DQd+qLKWy68/mC3grgAi1YfiqMgLPjCoADHF1CB9YXNx4UX7i6U3t4FSpteMSJ36igQgt4eVwH2FugUMhAwwLNAyYlIQczVykG6q9QFvwdSpi3ClSwAxYgAO3mGesxN/HUTcPSAVqXfiaAAFtWaKahOAq1BAvGYRcgcargNwf4D8ijc0kjUOH3De+nCiRneeFBARzYTDNgPXnDcab+kCLIV1AeEE9D8H/McHCoIAKvkX/40gAyWEZG0F+7xx69sDFrthgnsGO09EwpQwAv8H2T8BBNVlhx10J28zTSlwrsV2T8cQJn10M/sAFFhAAd0GKoAIQztQGe1UNKsAH6gwAvgHqjwIYgdQAXIAM9RAVOZ1w19QtfCCob5gwn6D5Q8AI1oYZrWINfZQAGkAP+0wRV1WB2OAp4pgwI0ABjWDxUMAQdoBhkwwFUGAqvlInyYGLF4wOwtlMOcImiMAIUSGUE4ANHhTtwNItHA4uh4C8jRlq1eIuT0wRA0AIdkHex5gAYUIqS0CvmNWsCoIpgcwQ9sAM2EAMqsAIm8AH+GRBsyYAAyoYSC+ABwogKihWOBJZOTDc0RRACEQABZxIAASAABggkAmAB9eUQDpBVAqhYHwhSrWMBvKgwM7AQREIAEiiBzdAAFLABMMABtXMvqpIKVOAEO0ABKvhWypgDSjCQ+9IDJNCNExABEeAAESABFjACPiAFHqc/EsBPKuEDTxAFzGgIUKAEP6A7+oOH9XSPjjQ5T5AERjA4+yQcpQZWrJQEHgAWRMIA4zIJnxgczaB7ckZDE+ACD8g3VFAEJ0ABR/kQNeQBmJAgGlAPThBTwvF267gIPEB3eCYBKsCIS0MF5OUASGEABpgBLZAEVNABd3kB8fUENWAB87j+a3cRCkeQdhXGkzTlABaAAmtZM1LQXSFUWCngA0ewCz9AAfvjfoZABUeQAy3AAi/QA53YCFAQRahYFwTQABrAAujHM0OQAi3gAjMgBLLxBMhYQUcnBXlSey3wI56xWYwZFgJwABzwArF5NlSQBAYQAAggN7xwBChgbqu5DLNGAL9lA0ngkRjjbxIwAkM4ClupmNfpdd8TABggA0d3SVQAA6d4nsNxAG9ni+VEBS/wjww2YhrBAadZRihkhV1mX6RVnOlCS0jgg/opc1zWZAQgASggl/aTBCIAjigln0CRDCGQhe7DBNuAoW8VAI5RjujTBDD2UMXpXwIgATfgnY3+4wQf4JYplqLxoBEsUJOEY6IyCqKmwT842jZesaMMyqNJoQGRuTlQwAILSqSWYQAc0HKqM1wZKGtM2hwqxQG+NzovIBhVmmKF1YKjMwTWuRYpmpC5d50EMAFDIAUk2jZJMG2/qAAnqYthQaMpoQAsAARNwKaN0wQY4Ij90QArYEJIEKNC+oyA05ojAKVDA6M1yJM0VDayspW6k5EbFgEj8J8tM1yAahk1RAEvsARZWQVOYAkUAAAEsKSApgAYwBRa0wMRoKoZOj8uYASjSghOUAQwYALfIQCp2qmW1lQjEgIrOTRGsGRqx3ssoICMsARCEAMpEALHYIAYukd7WTP+UABG1wVdH/CGocAEPpACHIABsSqrGVUkHuBHCkMF7NoC9nJdGdB6pVAELpABsgCQ2MmaBrAC7ckqWJIENUAC83ZcKsFSvbAELyBadtpPuMKswDKAsBasgFFpgCMCR2oKzckCEpCq13kAI3Cxk/IDHQA8wEoTRIKlt8oLUvAEP2ACDhAA5tpPF8BFwOIDcRSzYkEAFOACILsKU9AEROACc8exDXpcBuAAIuCwlNIOJWtkEpACQPCjFGkENWACk2SpfNVXMfBhhHIEijeghCUBHVADUssLT7ADJKABcFpmzbAC4zknUGAE2nqhSXG04pCy55AEK4ABZ5IATTscAYD+FS56IkZAAlz6VcUVASwgoergAyKQCX+rHgjgqnOCJT0AIZELUQqwAnirD03gAgXTZ8TpGas0eQMTA2MJeALgACzQnSIxBU9QBCwgfzWEYwiws2XrHlKgAx7QD2+lsyxQBFxLEU+gBELAAiDQDzJUu0qHqV1oIk3QAyeARmhFJCQjBINLEE6QBEAwAyxwAhzAASOJADI0ldWLAB7gA7l7HFJQBClgbjgbJIEmAjXAuDCRq0OQAzXgAiPAjaFUQ/E7LBhAA/brHkrgApP0Vs7AAbrAF0/wrCGwARlQAQ0QsxjVDSigqe/BVYp3qEMKKvGqGkMwYPf1dRnAqOUBBGb++KhhISSO0RtN0D0ebGgOQAPrCxk9oVOPuLopMJTHMQVHwAFEa6VJwR8s9h5TUAPHkLkUtB4wgATDOxpO4AO5xlgzJ1QfsJy0gQRWi7UQlSk9kJnukQQxsAHUmocbAKa9IQVAAC4BrAxGEqoCwpVTWlB7FAMFfBhOEAMSIIoZpREdcGUCUgMQMsNNjALPuxm2hwxXJVQkoMHvkQQkQKe4MRgofBhHYDlfRWzqEiNAYCszdQAR0MCjAatMDA8HgIQ74gQrICQgZcT9+hasHJ8zNSL8uiTty0RNxQHeyheuUMFXNT82kMcNkgQp4Gl5OMCHIQQ62VTN8AFKyyNPEAP+5smwoRLFT5F4b7wJLPKYibwkP0B2DyUkiwsXUwAEtDxTGKDGa9IEI6tZRXsa5WwW58xbzzUBh0goxGXI32AAIfC2OvEELcAAAZSigJPFVdCmc0IEoJxRX7oVT7ACp7wMK7oD2DwnSwBGXnxpEmACFx0SysHI57q5RqDQhdIENBBDf6wAHMDOLrEEKADMRKxzB/ABOUDMejIFOQk45wp9PYsQSVACPE2mcMOqLHDJnKIEKLCx53oAHRDNFtEEZ7UJNOoMH8Chs4K6AlpQAHBmjSAFTbAESpAEsSwNprLR34ABWSotTGACECCxw8GCj+AEj2OYHnMOL4PW+LJK0rj+L0pAAyYQq+lEACdw0V7bDA9KRuggBSzAz+CgAT+QvaQyBaolA2v7GhLQyYvQL0RyATHQBDd8CvAZswGwARypNVKQBG78ddBnJd2WA29iAB3QkepAAwkcHuKC1B9jzGOKgA7gASMwAhY9CEuwAiOARjX908EgNnptJBJFONN8OK9BJAAgAW7LBLNFn5CoypEAyYggeLDrAxLg2MjZy3zjcVsdIaAhAhLAHIEmr4wwBUotCVupwVJQA2fcHyGg3DXjh+kcISBCAClQkzBEAJFAPYW1jhMzn2NRPECwWA/1TxtFe0ewDcmwXC5wAAAgyEdVPfvJDBGw1psD0yI92C3+0ARMUAQ7oARL8JtKwOJL0ARF0AMusAEic+AvQJ9NmBAcYAHZkwTHMB+dpz3T7AC4txEWkAEYgI8XgAEYoAEZ0ORNvuS2sAySgATc8M+CIAVL+XbbiLXzwN9080ImIAEhxLyUxbGpipepCsAcmzOT4AESIjRBdTBFUncugNPD2AMtgAIj0AHBtmGT8ALmxlJJkAGZKyGSWEWx6wIcMNEoMQk1YG4dHVP1lAFY7T8hBg8hCFKTAASh1AD2PJ8hoOfak2X+FQojwLAdIdnFw+WOHemRsKcjoIPG6avaOQGCEk9PIMTXBQlKcAIbwEFsaAATQAMsQAIeYAJQfUlHYMb+1evVi7AEJ3CQgAqJISwFSmAEZU1IRDB32/wQHtvtVVBdH5gACyDKItDXHJUEgR3rtKAS2QEJXGNPESACHvDcbFV+BVWwH/2JSwkY/EEDl0Vc/STKLLMIRhADIfDfSdEAImDqAjUF4jzdGKDFVTAEImABJekZ1+fq5aQEF+DFAqA4XPsEjqsW35h8BoDQudVVGYmXI7Cmh1CNyD4CBYO1BzABratcr2dVrEkB0ZcIFXAmqKqqB+BJ2sUEK9DbG2EVzBYC8E0I/d4BIJ9yLjDe48S5jPBQYs5WtnQgBzB8jnBbJo1a5sIR+AWL9UQAEfDRl+WMR+MBuk311+GkzR7DXE4g2P18ALccCf0xAj3w9YhlAil1tCwA94Mw3QgVYYcA5K5BABYwA4q/+AioAeQ+XSTwPTODiZ7hAJkuX0sEFhmA8YvgGWrt+IvQAgngyiOQ+YhgGROg2KqfCFKAAgFQAT9w9o2wGPNz9Z9VvLCvCHCjnTUkgQezHuxe+75waUWCARkwAiYgAhpQAQ4gARCAASgg4szPC8OiABuQAjsgBHvqrDsQAy/QAj9Q+d1fCggiCxWQwe1/D9WiCRYwqPOPD4EAADs=')

// *********** Upload file to Cloudinary ******************** //
function uploadFile(file) {
  var url = `https://api.cloudinary.com/v1_1/${cloudName}/upload`;
  var xhr = new XMLHttpRequest();
  var fd = new FormData();
  xhr.open('POST', url, true);
  xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

  xhr.onreadystatechange = function(e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
      // File uploaded successfully
      var response = JSON.parse(xhr.responseText);
      // https://res.cloudinary.com/cloudName/image/upload/v1483481128/public_id.jpg
      var url = response.secure_url;
      // Create a thumbnail of the uploaded image, with 150px width
      var tokens = url.split('/');
      tokens.splice(-2, 0, 'w_150,c_scale');
      var img = new Image(); // HTML5 Constructor
      img.src = tokens.join('/');
      img.alt = response.public_id;      
      document.body.appendChild(img);
    }
  };

  fd.append('upload_preset', unsignedUploadPreset);
  fd.append('tags', 'browser_upload'); // Optional - add tag for image admin in Cloudinary
  fd.append('file', file);
  xhr.send(fd);
}

An alternative, here is a great developer post on uploading base64encoded images with nodejs using Cloudinary by James Quick: https://dev.to/jamesqquick/cloudinary-image-upload-with-nodejs-4mad

Let me know if any of this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM