以下是一个基于Vue3和Typescript实现的图片上传函数:

import { ref } from 'vue'

type UploadFile = {
  name: string,
  size: number,
  type: string,
  raw: File
}

export default function useImageUploader() {
  const imageUrl = ref<string | null>(null)
  const uploading = ref(false)
  const error = ref<string | null>(null)

  const uploadImage = async (file: UploadFile) => {
    try {
      uploading.value = true
      const formData = new FormData()
      formData.append('image', file.raw)
      const response = await fetch('/api/uploadImage', {
        method: 'POST',
        body: formData
      })
      const data = await response.json()
      if (response.ok) {
        imageUrl.value = data.imageUrl
      } else {
        error.value = data.message
      }
    } catch (err) {
      error.value = err.message
    } finally {
      uploading.value = false
    }
  }

  return {
    imageUrl,
    uploading,
    error,
    uploadImage
  }
}

这个函数返回一个对象,包含了三个ref对象和一个上传图片的函数uploadImageimageUrl用于保存上传成功后的图片URL,uploading用于表示当前是否正在上传,error用于保存上传失败时的错误信息。uploadImage接收一个UploadFile对象作为参数,其中包含了上传的文件信息,包括文件名、大小、类型以及原始文件对象。函数会向服务器发送一个POST请求,将文件通过FormData对象提交给服务器。如果上传成功,服务器会返回一个包含图片URL的JSON对象,函数将该URL保存到imageUrl对象中。如果上传失败,函数将错误信息保存到error对象中

vue3+ts上传一个图片的函数写法

原文地址: https://www.cveoy.top/t/topic/hw4O 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录