热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

uniapp的上传

hello,我又要细说uniapp了附件上传,图片上传,视频上传应该是目前手机比较常见的功能,但是对于上传还是有一些需要注

hello,我又要细说uniapp了

附件上传,图片上传,视频上传应该是目前手机比较常见的功能,但是对于上传还是有一些需要注意

上传 - 一般有图片上传,附件视频


图片上传

图片的上传 -  直接动手机或者摄像头

官网地址:

uni-app官网


附件或者视频

官网:

uni-app官网

注意 - 微信小程序和app是不支持这个api的 - 对于微信小程序wx.chooseMessageFile(可以从微信聊天会话中进行选择

关于app的上传附件,可以利用原生进行,这篇文章中有记录uniapp实现常用功能_哆来A梦没有口袋的博客-CSDN博客_uniapp常用功能

选择完之后就是上传,uniapp有自己的上传

上传 

uni-app官网

上传也很好理解,都有案例,如果要上传自己的参数,可以写在formData里面

其实写这篇文章主要不是讲这几个api,而是讲假设要自己上传附件给后端应该怎么做

用post,上传base64给后端

uni.getFileSystemManager() - 获取全局唯一的文件管理器,利用readFile方法进行转码

要注意的是每个小程序有自己的规范

uni-app官网

写个案例

uni.chooseImage({count: 1,success: (res) => {wx.getFileSystemManager().readFile({filePath: res.tempFilePaths[0],encoding: "base64",success: (result) => {this.form[name] = 'data:image/png;base64,' + result.data;this[name] = result.data;this.$forceUpdate();}})}})

这个base64文件就是你要传给后端的图片了,

关于上传多个图片给后端

1,循环遍历用uniapp自己的upload方法

2. 利用base64, 在一个接口上传多个图片给后端


APP选择附件

 首先了解一下renderjs - uni-app官网

使用这个是因为当时上传附件使用u-view上传附件,结果在h5可以上传附件,但是其实在app端是不支持上传图片的,但是做也没有注意,为了解决这个问题,就写了一个原生input来实现上传附件,

其实uniapp是有上传的api的,但是刚好附件上传api只支持h5,也不支持app,

上传附件组件


顺便贴一个封装的上传附件的代码

import {Config
} from '../utils/config.js'import $ from '@/js/jquery-3.4.1.min.js'class UploadApi {constructor() {}//obj为 u-upload控件 选择的文件返回 - obj.url// eg [{"url":"blob:http://localhost:8083/56d15704-2537-46fd-b188-fedfc2b8b35f","progress":0,"error":false,"file":{}}] uploadFile(formData, obj) {return new Promise((resolve, reject) => {uni.uploadFile({url: Config.getInstance().getBaseUrl() + '/api/common/upload.do',filePath: obj.url,name: 'file',formData: formData,success: res => {const data = JSON.parse(res.data)// console.log("上传文件返回 data:" + JSON.stringify(data))if (data.code == "9000") {resolve(data.data)// console.log("上传文件返回 成功:" + data.data)} else {reject(data)// console.log("上传文件返回 失败:" + JSON.stringify(data))}},fail: (e) => {console.log("上传文件fail返回:" + e)reject(e)}})})}/*** @param {File} file 文件对象* @param {Integer} fileType 1 图片 2 视频 * */uploadFileByJquery(file, fileType) {return new Promise((resolve, reject) => {var formData = new FormData();formData.append("file", file); //上传一个files对象formData.append("fileType", fileType); //需要上传的多个参数$.ajax({url: Config.getInstance().getBaseUrl() + '/api/common/upload.do',type: "post",data: formData,processData: false,contentType: false,success: function(res) {resolve(res.data);},error: function(err) {reject("网络连接失败,稍后重试", err);}})})}/// 上传多图uploadFiles(formData, objs) {let num;if (objs) {num = objs.length;}return new Promise(async (resolve, reject) => {let queue = new Array()try {for (let i = 0; i }export {UploadApi
}

除了上传,一定还有回显,预览图片和附件,一定要记得地址要正确,不然会显示失败

import {Config
} from '@/utils/config.js';
const config = new Config();export function searchPdf(url) {let allUrl = url.replace("\\", "\/");if(!url.includes('http')) {allUrl = config.getImgPdfUrl() + allUrl;}console.log("allUrl: ",allUrl);if (url.includes('jpeg') || url.includes('jpg') || url.includes('png')) {console.log(allUrl, 'ALLImag')uni.previewImage({urls: [allUrl],fail: () => {console.log("预览图片失败", JSON.stringify(err))uni.showToast({title: '预览图片失败',icon: 'none'});},success(index, tapIndex) {console.log("预览图片成功", index, tapIndex)}});return} else {uni.showLoading({title: '正在打开,请等待'});uni.downloadFile({url: allUrl,fail: () => {uni.hideLoading()uni.showToast({title: '预览文件失败',icon: 'none'});},success: function(res) {console.log(res, 'res')var filePath = res.tempFilePath;console.log(filePath, 'folefasa',filePath)uni.openDocument({filePath: filePath,success: function(res) {console.log("预览文件成功", res)uni.hideLoading();},fail(err) {console.log("预览文件失败", err)uni.hideLoading();uni.showToast({title: '预览文件失败',icon: 'none'});}});},})}}

码字不易,点个赞啊!




推荐阅读
  • 阿里“云开发“小程序(uniCould)
    博主ps:网上资料少的可怜,哎,腾讯云涨价了,论服务器,我肯定选的阿里,再着你们对比下unico ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • HTML 页面中调用 JavaScript 函数生成随机数值并自动展示
    在HTML页面中,通过调用JavaScript函数生成随机数值,并将其自动展示在页面上。具体实现包括构建HTML页面结构,定义JavaScript函数以生成随机数,以及在页面加载时自动调用该函数并将结果呈现给用户。 ... [详细]
  • 如何撰写PHP电商项目的实战经验? ... [详细]
  • 安卓ndk开发!高级Android晋升之View渲染机制,附答案
    缘起深圳市腾讯计算机系统有限公司成立于1998年11月,是中国最大的互联网综合服务提供商之一,也是中国服务用户最多的互联网企业之一。腾讯业务多元化& ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本地存储组件实现对IE低版本浏览器的兼容性支持 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有