上传upload及显示img图片预览、删除

本文介绍了在Vue项目中使用anti-design-vue和elementui组件进行图片上传、预览和删除的功能实现。详细讲解了HTML、JS和CSS代码部分,并提供了antd和element两种预览方式。示例中展示了如何通过v-model绑定文件列表,回显已上传图片,以及如何添加图片预览和删除功能。
摘要由CSDN通过智能技术生成

上传图片文件a-upload

html部分

 <div className="clearfix">
  <a-upload
      :custom-request="customRequest"
      listType="picture-card"
      :fileList="fileList"
      :onPreview="handlePreview"
      :on-remove="del"
  >
    <div>
      <plus-outlined/>
      <div className="ant-upload-text">Upload</div>
    </div>
  </a-upload>
  <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
    <img alt="" style="width: 100%" :src="previewImage"/>
  </a-modal>
</div> 

js部分

// 是否预览
const previewVisible = ref(false)
// 图片url
const previewImage = ref('')
// 图片集合
const fileList = ref([])
// 图片id
const currentfileId = ref()

const handleCancel = () => {
   
  console.log("关闭预览图")
  previewVisible.value = false
}

const handlePreview = (file) => {
   
  console.log("预览操作")
  previewImage.value = file.url || file.thumbUrl
  previewVisible.value = true
}

const customRequest = async ({
    
                               action,
                               data,
                               file,
                               filename,
                               headers,
                               onError,
                               onProgress,
                               onSuccess,
                               withCredentials
                             }) => {
   
  const formData = new FormData()
  formData.append('file', file)
  const fileId = await fileApi.fileUploadDynamicReturnId(formData)
  emit('uploadDone', fileId)
  onSuccess({
   data: fileId}, file)
  // 加入到显示集合,此处直接赋值,因为我设置的只能有一张图,fileList为数组[],file为对象{}
  fileList.value = [file]
  currentfileId.value = fileId
}

const del = (file) => {
   
  fileApi.fileDelete([{
    id: currentfileId.value }]).then((res) => {
   
    // 同时清空 fileList
    fileList.value = []
    currentfileId.value = ''
  })
}

css部分

 .ant-upload-select-picture-card i {
   
  font-size: 28px;
  color: #999;
}
.ant-upload-select-picture-card .ant-upload-text {
   
  margin-top: 8px;
  font-size: 12px;
  color: #666;
} 

效果图:

未上传图片上传了一张图片

参考

以上是参考官方文档antd(2.13.11),该组件文档如下:

import {
    Upload, Icon, Modal } from 'antd';
class PicturesWall extends React.Component {
   
	state = {
   
		previewVisible: false,
		previewImage: '',
		f
  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElementUI 提供了一个 Upload 组件,可以实现上传多张图片并且提供预览删除功能。以下是详细的实现步骤: 1. 在组件中引入 Upload 组件: ```html <template> <el-upload class="upload-demo" action="/upload" :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList" :list-type="'picture-card'" :multiple="true" :auto-upload="false" > <i class="el-icon-plus"></i> </el-upload> </template> ``` 其中,`:on-preview`和`:on-remove`分别绑定了两个方法 `handlePreview` 和 `handleRemove`,用于预览删除图片。`:file-list`用于绑定已上传图片列表。 2. 在 `methods` 中定义 `handlePreview` 和 `handleRemove` 方法: ```js methods: { handlePreview(file) { // 预览图片 this.$preview(file.url); }, handleRemove(file, fileList) { // 删除图片 this.fileList = fileList; } } ``` 其中,`handlePreview` 方法用于预览图片,`handleRemove` 方法用于删除图片。在 `handlePreview` 方法中,我们可以使用 `$preview` 方法来实现图片预览。在 `handleRemove` 方法中,我们需要更新已上传图片列表,即将删除后的列表重新赋值给 `fileList`。 3. 在 `mounted` 钩子中定义 `$preview` 方法: ```js mounted() { this.$preview = (url) => { this.$alert(`<img src="${url}" style="max-width: 100%">`, '预览', { dangerouslyUseHTMLString: true }); }; }, ``` 在 `$preview` 方法中,我们使用 `this.$alert` 方法来显示预览图片的弹窗,其中的 `dangerouslyUseHTMLString` 选项用于在弹窗中显示 HTML 字符串。 4. 在 `data` 中定义 `fileList` 数组: ```js data() { return { fileList: [] }; } ``` 这里的 `fileList` 数组用于存储已上传图片列表。 至此,我们就完成了 ElementUI Upload 组件的多张图片预览删除功能实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值