Skip to content

Images et médias ​

Ajouter une image ​

Une image peut être insérée depuis la barre d’outils, le menu / ou un collage. Si votre application doit envoyer le fichier vers un serveur, fournissez simplement une fonction uploadImage.

vue
<script setup lang="ts">
import type { NfzEditorImageUpload } from '@vevedh/nfz-notion-markdown-editor/types'

const markdown = ref('')

const uploadImage: NfzEditorImageUpload = async (payload) => {
  const blob = await (await fetch(payload.dataUrl)).blob()
  const body = new FormData()
  body.append('file', new File([blob], payload.fileName, { type: payload.mimeType }))

  const result = await $fetch<{ url: string }>('/api/media', {
    method: 'POST',
    body
  })

  return { url: result.url }
}
</script>

<template>
  <NfzNotionMarkdownEditor v-model="markdown" :upload-image="uploadImage" />
</template>

L’éditeur ne connaît ni vos identifiants de stockage ni vos secrets. Il reçoit uniquement l’URL finale à insérer dans le document.

Stocker les fichiers sur un service S3-compatible ​

Votre backend peut utiliser n’importe quel stockage objet compatible S3. Pour un hébergement autonome, l’exemple fourni dans le projet utilise RustFS. La configuration applicative reste générique avec des variables S3_*, ce qui évite de lier l’éditeur à un fournisseur particulier.

Gardez toujours les clés S3 côté serveur. Vérifiez aussi le type MIME, la taille réelle du fichier et générez vous-même le nom de l’objet avant l’envoi vers le stockage.

Ajouter une légende ​

Cliquez sur une image pour afficher ses outils, puis saisissez la légende sous le visuel. Elle est conservée avec le document lors des allers-retours Markdown.

Vous pouvez désactiver cette fonction avec enableImageCaption.

Vidéos et iframes ​

Les URL dangereuses sont refusées. Pour autoriser une iframe personnalisée, utilisez une URL HTTPS et ajoutez explicitement son nom d’hôte dans allowedIframeHosts.

NFZ Notion Markdown Editor