@femessage/upload-to-ali 上传图片

这篇博客详细介绍了如何使用@femessage/upload-to-ali组件进行图片上传,包括安装步骤、组件配置信息和代码演示。配置项涉及上传地址、文件类型限制、上传前钩子函数、图片压缩等。示例代码展示了如何自定义上传请求接口,并处理上传完成后的事件。在实际运行中遇到问题,可通过安装npm istream解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图
在这里插入图片描述

1.安装 
yarn add @femessage/upload-to-ali
2.组件配置信息
/*Prop name	Type	Default	Required	Description
v-model	string|array	Required	
true
图片地址, 支持v-model
accept	string	image	
接受上传的文件类型, 多个值逗号分隔, 默认只接受图片 其他文件类型可以参考MIME 类型列表

action	string	process.env.UPLOAD_ACTION	
上传地址

beforeUpload	func		
upload前的钩子函数,传入选择的文件,FileList类型。 要求返回一个promise,resolved则继续upload,rejected则停止上传。 调用时机在size和accept检验之前。

bucket	string	process.env.OSS_BUCKET	
存储空间的名字

compressOptions	object	{ maxWidth: 750 }	
图片压缩参数,请参考:https://www.npmjs.com/package/compressorjs#options

customDomain	string	process.env.OSS_CUSTOM_DOMAIN	
自定义域名, 该字段有值时, 返回的文件url拼接规则为: customDomain + / + dir + filename 域名无协议时, url默认以 // 开头 域名不需要/结尾

dir	string	process.env.OSS_DIR || '	
目录名, 一定要/结尾

disabled	boolean	false	
是否禁用。若为true,则不能上传

max	number	9	
允许上传的最大数量

multiple	boolean	false	
是否多选

onClick	func		
点击事件, 返回参数为当前点击的url

onOversize	func		
所选文件超出size限制时的处理函数; 接收超出大小的文件作为参数

preview	boolean	true	
是否开启预览功能,需要全局注册 img-preview 组件

region	string	process.env.OSS_REGION	
根据 存储空间 所在的存储区域, 相应的上传域名

request	func		
自定义上传, 使用此函数则会覆盖默认的上传行为和全局上传行为 返回 Promise, 接收 resolve 参数为 url

size	number	1024	
上传文件大小限制, 单位为KB, 默认值为1024, 参考GitHub上传头像设置

https://github.com/settings/profile

timeout	number	0	
暂不支持此props。超时时间, 单位毫秒, 大于0才生效

tip	string	''	
自定义上传提示内容

uploadOptions	object	{ partSize: 100 * oneKB }	
上传参数,请参考:https://help.aliyun.com/document_detail/64047.html?spm=a2c4g.11186623.2.25.40d279f8OV4hwk#h2-url-2

Method name	Parameters	Description
selectFiles()		
手动触发选择文件事件

Event name	Type	Description
input	undefined	
delete	undefined	
删除图片事件

Arguments
url: string — 被删除图片的url;index: number — 被删除图片的下标
loading	undefined	
上传过程中

Arguments
name: string — 当前上传的图片名称
fail	undefined	
上传失败

Arguments
error: Error — 上传失败或压缩失败抛出的 error 对象。当压缩失败时,error.message === 'compress-fail'
loaded	undefined	
上传完成后触发的事件。

Arguments
urls: string[]|string — multiple模式返回此次成功上传的文件url数组; 单张模式返回上传的url
Slot	Description
default	
自定义上传区域,会覆盖 slot=spinner、slot=placeholder

spinner	
自定义loading内容,默认类似 element-ui 的 v-loading

placeholder	
自定义placeholder内容 */
3.代码演示
<template>
  <div>
     <UploadToAli 
		v-model="url" :request="requestx"
		accept="image/png,image/jpg,image/jpeg"
		:size="1024*1024*15" :max="15" 
		:multiple="true" :preview="true"
	/>
  </div>
</template>
<script>
//注册组件
import UploadToAli from '@femessage/upload-to-ali'
//上传图片请求接口
import { fecthFileUploadUrl } from '@/services/fileUpload'
export default {
  components:{UploadToAli},
  data(){
    return{
      url:[]
    }
  },
  methods:{
    loaded(file) {
      console.log(file) // url地址
    },
    //上传
    async requestx(file) {
      let apiServer = process.env.API_SERVER
      const devEnv = !!apiServer
        ? new RegExp(/dev|test|uat/gi).exec(apiServer)
        : null
      const env = new RegExp(/dev|test|uat/gi).exec(location.origin)
      const isDev =
        location.origin.indexOf('localhost') > -1 ||
        location.origin.indexOf('127.') > -1 ||
        location.origin.indexOf('192.') > -1
      const envStr =
        !!isDev && devEnv[0] ? devEnv[0] : env && env[0] ? env[0] : 'prd'
      const param = new FormData()
      param.append('file', file)
      param.append('catalog', `dr-${envStr}/console/file/`)
      //请求 fecthFileUploadUrl
      const data = await fecthFileUploadUrl(param)
      const url = data.data.payload
      //console.log('url', url);
      return Promise.resolve(url)
    },
  }
};
</script>

运行时报这个错,安装 npm i stream 就可以了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值