前端vue单个文件上传支持图片,压缩包以及文件 , 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13066

效果图如下:

使用方法


<!-- photoList:选择的图片数组  @click:图片选择事件--> <ccChooseImgsView :photoList="photoList" @click="addPhotoClick"></ccChooseImgsView> addPhotoClick() { uni.hideLoading(); let myThis = this; if (myThis.photoList.length >= 1) { myThis.photoList = []; } uni.chooseImage({ count: 1, sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: ['album'], //从相册选择 success: function(res) { myThis.photoList = [{'filePath':res.tempFilePaths[0]}]; console.log('选择图片 =' + JSON.stringify(myThis.photoList)); } }); }, if (this.photoList.length > 0) { myFilePath = this.photoList[0].filePath; } // 服务器地址上传地址 仅为示例,非真实的接口地址 let baseUrl = "http://gzcc.com/cc//appSc/up" uni.uploadFile({ url: baseUrl, //仅为示例,非真实的接口地址 filePath: myFilePath, //文件路径 name: 'image', //服务端文件接受key formData: this.myParamData, success: (uploadFileRes) => { uni.hideLoading(); let dataDic = JSON.parse(uploadFileRes.data); console.log('uploadFileRes成功 = ' + JSON.stringify(uploadFileRes)); console.log('datadic成功 = ' + typeof(dataDic)); console.log('code码 = ' + dataDic['code']); } });

HTML代码部分


<template> <view class="content" v-if="seen"> <form @submit="formSubmit" @reset="formReset"> <view class="inputView"> <text class="leftTitle">交通指引</text> </view> <textarea class="rightTextarea" name="direct" placeholder=" 请输入交通指引" /> <view class="inputView"> <text class="leftTitle">房屋介绍</text> </view> <textarea class="rightTextarea" name="village" placeholder=" 请输入房屋介绍" /> <view class="inputView"> <text class="leftTitle">添加房源照片(仅可添加1张)</text> </view> <!-- photoList:选择的图片数组  @click:图片选择事件--> <ccChooseImgsView :photoList="photoList" @click="addPhotoClick"></ccChooseImgsView> <view class="uni-btn-v"> <button class="botBtn" type="primary" form-type="submit">提交</button> <view class="tipText"> 注意事项: 请确保您填写的房屋信息真实无误 </view> </view> </form> </view> </template>

JS代码 (引入组件 填充数据)


<script> import Vue from 'vue'; import ccChooseImgsView from '../../components/ccChooseImgsView.vue'; export default { components: { ccChooseImgsView }, data() { return { photoList: [], seen: true, myParamData: {}, isClick: false, }; }, onLoad: function(e) { }, methods: { formSubmit: function(e) { console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value)); if (this.isClick) { let that = this; setTimeout(function() { that.isClick = false; }, 600) return; } this.isClick = true; var formdata = e.detail.value; this.myParamData = Object.assign(this.myParamData, formdata); console.log('页面3 myParamData=' + JSON.stringify(this.myParamData)); if (formdata['direct'].length < 2) { uni.showModal({ content: '请输入交通指引', showCancel: false }); return; } if (formdata['village'].length < 2) { uni.showModal({ content: '请输入所在小区介绍', showCancel: false }); return; } if (this.photoList.length < 1) { uni.showModal({ content: '请添加房源照片', showCancel: false }); return; } uni.showLoading({ title: '上传中' }) let myFilePath = ''; if (this.photoList.length > 0) { myFilePath = this.photoList[0].filePath; } // 服务器地址上传地址 仅为示例,非真实的接口地址 let baseUrl = "http://gzcc.com/cc//appSc/up" uni.uploadFile({ url: baseUrl, //仅为示例,非真实的接口地址 filePath: myFilePath, //文件路径 name: 'image', //服务端文件接受key formData: this.myParamData, success: (uploadFileRes) => { uni.hideLoading(); let dataDic = JSON.parse(uploadFileRes.data); console.log('uploadFileRes成功 = ' + JSON.stringify(uploadFileRes)); console.log('datadic成功 = ' + typeof(dataDic)); console.log('code码 = ' + dataDic['code']); } }); }, addPhotoClick() { uni.hideLoading(); let myThis = this; if (myThis.photoList.length >= 1) { myThis.photoList = []; } uni.chooseImage({ count: 1, sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: ['album'], //从相册选择 success: function(res) { myThis.photoList = [{'filePath':res.tempFilePaths[0]}]; console.log('选择图片 =' + JSON.stringify(myThis.photoList)); } }); }, } }; </script>

CSS


<style> .uni-form-item .title { padding: 20rpx 0; } .content { display: flex; flex-direction: column; width: 100%; height: auto; } .inputView { flex-direction: row; display: flex; height: 40px; align-items: center; width: 100%; } .line { width: 90%; height: 2rpx; margin-left: -2rpx; background-color: #f8f8f8; margin-left: 5%; } .leftTitle { margin-left: 40rpx; width: 284px; height: 32px; line-height: 32px; font-size: 28rpx; color: #333333; } .rightTextarea { margin-left: 5%; width: 90%; height: 106px; line-height: 40rpx; border-radius: 12rpx; border: solid 1px #F5F5F5; font-size: 15px; } .uni-btn-v { width: 100%; height: auto; } .botBtn { width: 90%; margin-top: 36px; height: 48px; } .tipText { width: 100%; margin-left: 0px; text-align: center; color: #666666; margin-top: 36px; margin-bottom: 36px; font-size: 28rpx; } </style>

前端vue单个文件上传支持图片,压缩包以及文件 , 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13066的更多相关文章

  1. thinkphp文件上传以及图片处理

    文件上传 上传表单 在ThinkPHP中使用上传功能无需进行特别处理.例如,下面是一个带有附件上传的表单提交: <form action="__URL__/upload" e ...

  2. vue中el-upload上传多图片且携带参数,批量而不是一张一张的解决方案

    现在前端基本不是vue技术栈就是react技术栈. vue技术栈最常用的就是element-ui的ui框架了. 在项目中,我们经常会碰到这种需求:批量上传文件 element-ui 确实也为我们提供了 ...

  3. MVC&WebForm对照学习:文件上传(以图片为例)

    原文  http://www.tuicool.com/articles/myM7fe 主题 HTMLMVC模式Asp.net 博客园::首页::  ::  ::  ::管理 5 Posts :: 0 ...

  4. mvc文件上传支持批量上传,拖拽以及预览,文件内容校验等

    使用bootstrap-fileinput 使用方式: 1.nuget:Install-Package bootstrap-fileinput 2.语言本地化{下载fileinput_locale_z ...

  5. .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件

    asp.net mvc请移步 mvc文件上传支持批量上传,拖拽以及预览,文件内容校验 本篇内容主要解决.net core中文件上传的问题  开发环境:ubuntu+vscode 1.导入所需要的包:n ...

  6. skymvc文件上传支持多文件上传

    skymvc文件上传支持多文件上传 支持单文件.多文件上传 可以设定 文件大小.存储目录.文件类型 //上传的文件目录 $this->upload->uploaddir="att ...

  7. struts文件上传,获取文件名和文件类型

    struts文件上传,获取文件名和文件类型   Action中还有两个属 性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是S ...

  8. 【FTP】java FTPClient 文件上传内容为空,文件大小为0

    问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: ...

  9. Spring4 MVC 多文件上传(图片并展示)

    开始需要在pom.xml加入几个jar,分别是 <dependency> <groupId>commons-fileupload</groupId> <art ...

  10. spring实现文件上传(图片解析)

    合抱之木,生于毫末,千里之行,始于足下,要想了解spring的文件上传功能,首先要知道spring是通过流的方式将文件进行解析,然后上传.那么是不是所有需要用的文件上传的地方都要写一遍文件解析器呢? ...

随机推荐

  1. python之中文符号转英文符号

    maketrans内置方法, 可以将中文符号转换为英文符号.以下代码中,事先定义(中文符号)和其对应的(英文符号),也就是定义中文符号, 也要有对应的英文符号,否则会报错.这个功能其实和替换功能差不多 ...

  2. 在k8s(kubernetes) 上安装 ingress V1.1.0

    Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由.流量路由由 Ingress 资源上定义的规则控制. 下面是一个将所有流量都发送到同一 Service 的简单 Ingre ...

  3. 【Java SE】枚举类和注解

    1.枚举类的使用 当类的对象由有限个,确定的时候,我们称这种类为枚举类.当需要定义一组常量时,建议使用枚举类.而当枚举类中只有一个对象时,可以使用单例模式. 1.1 enmu关键字 省略private ...

  4. Python ArcPy批量计算多时相遥感影像的各项元平均值

      本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取.   在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取-- ...

  5. API 网关日志的价值,你了解多少?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者钱勇,API7.ai 技术工程师,Apache APISIX Committe ...

  6. vue3组合式API介绍

    为什么要使用Composition API? 根据官方的说法,vue3.0的变化包括性能上的改进.更小的 bundle 体积.对 TypeScript 更好的支持.用于处理大规模用例的全新 API,全 ...

  7. node使用react项目启动错误TSError: ⨯ Unable to compile TypeScript:

    1.错误内容 return new TSError(diagnosticText, diagnosticCodes) ^ TSError: ⨯ Unable to compile TypeScript ...

  8. 笔记九:线程间的通信(pthread_create()和pthread_self())

    linux高级编程之线程间的通信:(pthread_create().pthread_self()) 1.线程概念        线程包含了表示进程内执行环境必须得信息,其中包括进程中标识线程的线程I ...

  9. linux syslog.d日记操作记录-小节

    以下记录在学习LDD3时调试处理打印的一些操作 syslog 不同的发行版,不同的脚本文件,如fedora18中为rsyslog的名称 1:配置文件 /etc/syslog.conf(fedora r ...

  10. C# 信号锁SemaphoreSlim

    关于锁,我们经常会使用lock object对象,进行资源访问的限制. 但,lock是有限制的,无法添加异步方法.编译器会报错. 下面推荐另一个类SemaphoreSlim,这是信号量的一个使用类.先 ...