vue里面怎么删除部分页面_基于VUE选择上传图片并页面显示(图片可删除)

基于VUE选择上传图片并在页面显示,图片可删除,具体内容如下

demo例子:

依赖文件:

HTML文本内容:

相关照片

JS文本内容:

/**

* 从 file 域获取 本地图片 url

*/

function getFileUrl(obj) {

let url;

url = window.URL.createObjectURL(obj.files.item(0));

return url;

}

export default {

name: 'accident',// 定义数据

data () {

return {

imgNum:4,//上传的照片数量,可根据实际情况自定义

}

},//定义事件

methods:{

//根据点击上传按钮触发input

change_input(){

let inputArr=$('#addTextForm input');

let add_inputId=''; //需要被触发的input

for(let i=0;i

// 根据input的value值判断是否已经选择文件

if(!inputArr[i].value){ //如果没有选择,获得这个input的ID

add_inputId=inputArr[i].id;

break;

}

}

if(add_inputId){ //如果需要被触发的input ID存在,将对应的input触发

return $("#"+addinputId).click();

}else{

alert("最多选择"+this.imgNum+"张图片")

}

},//当input选择了图片的时候触发,将获得的src赋值到相对应的img

setImg(e){

let target=e.target;

$('#img'+target.id).attr('src',getFileUrl(e.srcElement));

},//点击图片删除该图片并清除相对的input

deleteImg(e){

let target=e.target;

let inputID=''; //需要清除value的input

if(target.nodeName=='IMG'){

target.src='';

inputID=target.id.replace('img_',''); //获得需要清除value的input

$('input#'+inputID).val("");

}

},//提交信息到后台

submit(){

$("#addTextForm").ajaxSubmit({

url: this.$root.api+"/Index/staff_accident/add",type: "post",data: {

'total_price':this.price,'descript':this.descript,},success: (data) => {

if(data.code==0){

console.log(‘提交成功');

}else{

alert('提交失败');

}

}

});

}

},//页面加载后执行

mounted(){

for(let i=0;i

//生成input框,默认为1

let my_input = $(''); //创建一个input

my_input.attr('id',i); //为创建的input添加id

$('#addTextForm').append(my_input); //将生成的input追加到指定的form

//生成img,默认为1

let my_img = $('');

myimg.attr('id','img'+i);

my_img.css({"max-width":"50%","max-height":"200px"});

//添加样式,由于vue的执行机制,页面加载的时候img标签还没有生成,直接写在style样式会不生效

$('#img-wrapper').append(my_img);

}

},}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于 vue-upload-component 的完整的美观的,多文件上传示例: 首先,我们需要安装 vue-upload-component: ``` npm install vue-upload-component --save ``` 然后,在 Vue 组件中引入和使用 vue-upload-component: ```html <template> <div> <vue-upload-component ref="upload" :url="uploadUrl" :headers="uploadHeaders" :multiple="true" :data="{userId: userId}" :accept="'image/*'" :extensions="allowedExtensions" :maxSize="maxFileSize" :withCredentials="true" @input-filter="handleInputFilter" @before-upload="handleBeforeUpload" @uploading="handleUploading" @upload-success="handleUploadSuccess" @upload-error="handleUploadError" > <template v-slot:default> <div class="upload-area"> <div v-if="!isUploading"> <i class="iconfont icon-add"></i> <span class="text">点击上传</span> </div> <div v-else> <i class="iconfont icon-loading"></i> <span class="text">上传中...</span> </div> </div> </template> </vue-upload-component> <div class="preview-area"> <div v-for="(file, index) in uploadedFiles" :key="file.id"> <img :src="file.url" class="preview-image"> <div class="preview-name">{{ file.name }}</div> <div class="preview-size">{{ fileSize(file.size) }}</div> <div class="preview-delete" @click="deleteFile(index)">删除</div> </div> </div> </div> </template> <script> import VueUploadComponent from 'vue-upload-component' export default { components: { VueUploadComponent }, data() { return { userId: '123456', uploadUrl: 'https://example.com/upload', uploadHeaders: { Authorization: 'Bearer ' + localStorage.getItem('token') }, allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'], maxFileSize: 10 * 1024 * 1024, // 10MB isUploading: false, uploadedFiles: [] } }, methods: { handleInputFilter(uploadData) { // 文件过滤器 if (uploadData.file.type.indexOf('image/') !== 0) { return Promise.reject('只能上传图片文件') } return Promise.resolve(uploadData) }, handleBeforeUpload(uploadData) { // 开始上传前的回调 this.isUploading = true return uploadData }, handleUploading(uploadData) { // 正在上传的回调 console.log('uploading', uploadData.progress) }, handleUploadSuccess(uploadData) { // 上传成功的回调 console.log('success', uploadData.url) this.uploadedFiles.push({ id: uploadData.response.id, name: uploadData.file.name, size: uploadData.file.size, url: uploadData.response.url }) this.isUploading = false }, handleUploadError(uploadData) { // 上传失败的回调 console.error('error', uploadData.error) this.isUploading = false }, fileSize(size) { // 文件大小格式化 if (size < 1024) { return size + 'B' } else if (size < 1024 * 1024) { return (size / 1024).toFixed(2) + 'KB' } else { return (size / 1024 / 1024).toFixed(2) + 'MB' } }, deleteFile(index) { // 删除已上传的文件 this.uploadedFiles.splice(index, 1) } } } </script> <style> .upload-area { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 200px; height: 200px; border: 2px dashed #ccc; cursor: pointer; } .text { margin-top: 10px; font-size: 16px; color: #666; } .iconfont { font-size: 48px; color: #ccc; } .icon-add:before { content: '\e600'; } .icon-loading:before { content: '\e602'; animation: loading 1s infinite linear; } @keyframes loading { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .preview-area { display: flex; flex-wrap: wrap; margin-top: 20px; } .preview-image { width: 150px; height: 150px; object-fit: cover; margin-right: 10px; margin-bottom: 10px; } .preview-name { margin-top: 5px; font-size: 14px; color: #666; } .preview-size { margin-top: 5px; font-size: 14px; color: #666; } .preview-delete { margin-top: 5px; font-size: 14px; color: #f44336; cursor: pointer; } </style> ``` 上面的示例中,我们定义了一个上传区域的样式,当用户点击上传区域时,会触发 vue-upload-component 的文件选择框。用户选择图片文件后,会触发相应的回调函数,我们可以在这些回调函数中处理上传过程中的各种情况,比如文件过滤、上传前的准备工作、正在上传、上传成功、上传失败等。 接着,我们在组件中定义 uploadedFiles 数组,用于存储已上传的文件信息。当一个文件上传成功后,我们将该文件的信息添加到 uploadedFiles 数组中,并在页面上展示出来。用户可以通过点击删除按钮删除已上传的文件。 这个示例是一个多文件上传的例子,您可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值