UNPKG

@nuxthub/core

Version:

Build full-stack Nuxt applications on Cloudflare, with zero configuration.

34 lines (33 loc) 1.05 kB
import { createError } from "h3"; export function useUpload(apiBase, options = {}) { const { formKey = "files", multiple = true, method, ...fetchOptions } = options || {}; async function upload(data) { let files = Array.isArray(data) ? data : []; if (String(data?.files).includes("FileList")) { files = Array.from(data.files); } if (data instanceof File) { files = [data]; } if (typeof FileList !== "undefined" && data instanceof FileList) { files = Array.from(data); } if (!files || !files.length) { throw createError({ statusCode: 400, message: "Missing files" }); } const formData = new FormData(); if (multiple) { for (const file of files) { formData.append(formKey, file); } } else { formData.append(formKey, files[0]); } return $fetch(apiBase, { ...fetchOptions, method: method || "POST", body: formData }).then((result) => multiple === false || data instanceof File ? result[0] : result); } return upload; }