โ† blog
JavaScript Cloudinary Zero backend Upload

Upload file su Cloudinary con resource_type: raw

Come caricare PDF, Word, Excel e altri file binari generici su Cloudinary usando un upload preset unsigned e resource_type=raw โ€” interamente client-side, senza backend dedicato.

Il problema

Cloudinary รจ ottimo per immagini e video, ma il tipo image di default rifiuta file binari generici come PDF o documenti Office. Per caricarli serve dichiarare esplicitamente resource_type=raw nell'URL dell'endpoint di upload.

Upload con FormData e fetch

upload.js
async function uploadFileRaw(file) {
  const fd = new FormData();
  fd.append('file', file);
  fd.append('upload_preset', 'NOME_PRESET'); // preset unsigned giร  configurato

  // resource_type=raw โ€” obbligatorio per file non-immagine/video
  const res = await fetch(
    `https://api.cloudinary.com/v1_1/CLOUD_NAME/raw/upload`,
    { method: 'POST', body: fd }
  );

  const data = await res.json();
  if (!res.ok) throw new Error(data.error?.message || 'Upload fallito');

  return data.secure_url;
}

Quando usarlo: chat con allegati, sistemi documentali interni, qualunque upload PWA senza backend dedicato โ€” Cloudinary gestisce CDN, storage e URL pubblici automaticamente.

Configurare il preset unsigned

Su Cloudinary, un upload preset unsigned permette upload diretti dal client senza esporre la API secret. Nel pannello Cloudinary: Settings โ†’ Upload โ†’ Add upload preset, imposta Signing Mode: Unsigned e, punto critico, Resource type: Auto (non Image) โ€” altrimenti l'upload di un PDF restituisce un errore 400.

Attenzione: un upload preset unsigned รจ pubblico โ€” chiunque conosca il nome del preset puรฒ caricare file sul tuo account Cloudinary. Per uso pubblico imposta limiti di formato e dimensione nel preset, o passa a upload firmati lato server.

Articolo correlato
Invio documenti in una chat Firebase + Cloudinary โ€” caso reale completo
โ†’