我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【uniapp小程序】uploadFile文件上传

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【uniapp小程序】uploadFile文件上传

目录

写在前面

上节中我们讲到小程序的request请求,掌握了基本的网络请求方式,这节我们通过小程序的uploadFile接口能力完成对小程序上传操作(uni.uploadFile,后端php接口),通过这一节你可以学习到php的上传接口的写法,以及如何配合前端完成一个小程序上传操作

创建前端页面

我们默认使用创建新项目进行讲解,在index.vue最上方写入代码

<template><view style="width: 750rpx;height: 200rpx;display: flex;flex-direction: column;">上传的文件名:<button type="primary" style="width: 500rpx;" @click="upload()">点击上传</button></view></template>

通过前端点击“点击上传”来调用对应的方法

创建后运行如下
在这里插入图片描述
这里插一嘴,由于博主是全栈开发的,我给大家总结一下这部分与微信开发者工具 语法的区别
①uniapp必须用template标签嵌套
否则
在这里插入图片描述

②小程序点击事件用bindtap 而uniapp用@click
在这里插入图片描述

③uniapp的方法需要放在methods: {}里面
在这里插入图片描述

写入js事件(完成上传操作)

接下来我们在刚刚创建测试的方法upload中进行修改,首先整个动作原理是:通过点击按钮触发upload方法=》选择文件获取到本地的路径=》上传给服务器=》服务器返回上传的文件名(上传后随机生成的)
在这里插入图片描述
了解到整个流程后我们先将 文件进行选择
uni.chooseImage示例

uni.chooseImage({success: (chooseImageRes) => {const tempFilePaths = chooseImageRes.tempFilePaths;console.log(tempFilePaths);}});

将代码放在unload中运行测试
在这里插入图片描述
可以看到已经生成了临时的文件

接下来我们通过uni.uploadFile方法完成对文件的上传

uni.uploadFile示例

uni.uploadFile({url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址filePath: tempFilePaths[0],name: 'file',formData: {'user': 'test'},success: (uploadFileRes) => {console.log(uploadFileRes.data);}});

配置后端php接口文件

在写事件前,我通过在服务器上新建一个php文件作为文件上传的接口

新建tp_imgclass="lazy" data-src.php
考虑到大多数初学者这里决定用原生php进行开发

<?php // 上传图片 function uploadimg() {     $file = $_FILES['file'];    if ($file) {         //var_dump($file);        // 获取文件后缀名        $ext = pathinfo($file['name'], PATHINFO_EXTENSION);        $target = 'upload/' . uniqid() . '.' . $ext;        // 转移图片地址        if (!move_uploaded_file($file['tmp_name'], $target)) {            $GLOBALS['error_message'] = '上传图片失败';            echo error_message;        }                die(        json_encode(            array(            'errCode' => 0,            'error_message'=>'图片上传成功',            'file'=>$target        ),480));          }}uploadimg();

完成后整个目录是这样的(层级关系)
在这里插入图片描述

实现上传功能

接下来 我们将刚刚的上传接口uni.uploadFile与文件选择接口uni.chooseImage合并一下完成整个流程,也就是选择文件完成后,将选择的文件上传

我们在upload方法中写入

let that=this;console.log("我被点击了");uni.chooseImage({success: (chooseImageRes) => {const tempFilePaths = chooseImageRes.tempFilePaths;console.log(tempFilePaths);uni.uploadFile({url: 'https://你的接口地址/tp_imgclass="lazy" data-src.php', //仅为示例,非真实的接口地址filePath: tempFilePaths[0],name: 'file',formData: {},success: (uploadFileRes) => {console.log(uploadFileRes.data);}});}});

测试运行看看
在这里插入图片描述
返回了文件名和我自己定义的返回码

可以看到服务器上也是存在这个文件的
在这里插入图片描述

完善上传功能

最重要的步骤我们已经做完了,那上传成功是不是得告诉下上传的用户告诉他们上传成功了?

于是我们需要做一下判断,当errCode==0的时候高速用户上传成功

但是发现了个问题,php返回的是数组,为啥到uniapp返回的是字符串?

在这里插入图片描述
指导我看了下官方的文档
在这里插入图片描述
返回的是字符类型

解决办法:

      let param_json = JSON.stringify(this.$data)//转为字符串      let bookkeeping_data = JSON.parse(bookkeeping_data_string)//转换为JSON

测试后完美解决
改动到的代码

let json_data = JSON.parse(uploadFileRes.data)console.log(json_data['errCode']);

在这里插入图片描述

接下来就可以将信息告诉用户是否上传成功了
uni.showToast示例

uni.showToast({title: '标题',icon:'none'duration: 2000});

相应的代码:

let json_data = JSON.parse(uploadFileRes.data)console.log(json_data['errCode']);if (json_data['errCode']==0) {uni.showToast({title: json_data['error_message'],icon:'none',duration: 2000});} else{}

测试截图
在这里插入图片描述

完整的index.vue

<template><view style="width: 750rpx;height: 200rpx;display: flex;flex-direction: column;">上传的文件名:<button type="primary" style="width: 500rpx;" @click="upload">点击上传</button></view></template><script>export default {data() {return {title: 'Hello'}},onLoad() {         let that=this;uni.request({    url: 'https://api.uomg.com/api/qq.info', //仅为示例,并非真实接口地址。    data: {        qq: '504113939'    },    header: {        'Content-Type': 'application/json;charset=UTF-8' //自定义请求头信息    },    success: (res) => {        console.log(res.data);          }});},methods: {upload(){let that=this;console.log("我被点击了");uni.chooseImage({success: (chooseImageRes) => {const tempFilePaths = chooseImageRes.tempFilePaths;console.log(tempFilePaths);uni.uploadFile({url: 'https:/你的接口/tp_imgclass="lazy" data-src.php', //仅为示例,非真实的接口地址filePath: tempFilePaths[0],name: 'file',formData: {},success: (uploadFileRes) => {let json_data = JSON.parse(uploadFileRes.data)console.log(json_data['errCode']);if (json_data['errCode']==0) {uni.showToast({title: json_data['error_message'],icon:'none',duration: 2000});} else{}}});}});},}}</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}.logo {height: 200rpx;width: 200rpx;margin-top: 200rpx;margin-left: auto;margin-right: auto;margin-bottom: 50rpx;}.text-area {display: flex;justify-content: center;}.title {font-size: 36rpx;color: #8f8f94;}</style>

最后

❤️❤️❤️❤️❤️❤️
🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,欢迎加入人工智能交流群(看我的动态),更多周边福利等你🥳🥳🥳

在这里插入图片描述
✨✨欢迎订阅本专栏或者关注我,大家一起努力每天一题算法题✨✨

❤️❤️❤️ 最后,希望我的这篇文章能对你的有所帮助!

愿自己还有你在未来的日子,保持学习,保持进步,保持热爱,奔赴山海! ❤️❤️❤️

来源地址:https://blog.csdn.net/qq_35230125/article/details/126422738

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【uniapp小程序】uploadFile文件上传

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【uniapp小程序】上传图片

文章目录 🍍前言🍋正文1、首先看官网uni.chooseImage(OBJECT) API 介绍 2、案例代码演示3、效果展示 🎃专栏分享: 🍍前言 本篇
2023-08-19

uniapp小程序上传图片功能的实现

本篇文章我们研究一下,在移动端开发过程中经常使用到的图片上传功能,在大多数小程序或者APP中都会遇到一些实名认证或者头像上传的功能,对uniapp小程序上传图片功能感兴趣的朋友跟随小编一起看看吧
2023-01-10

使用微信小程序实现文件上传功能

标题:使用微信小程序实现文件上传功能随着微信小程序的兴起,越来越多的企业和开发者开始利用微信小程序为用户提供便捷的服务。在很多情况下,用户需要上传文件。如果能够在微信小程序中实现文件上传功能,将会极大地提升用户体验。本文将介绍如何使用微信小
使用微信小程序实现文件上传功能
2023-11-21

微信小程序怎么实现ES6批量上传文件

这篇文章主要讲解了“微信小程序怎么实现ES6批量上传文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么实现ES6批量上传文件”吧!微信小程序 ES6Promise.all批量上
2023-06-17

uniapp怎么上传file文件到服务器

要在uniapp中上传文件到服务器,你可以使用uni.uploadFile()方法。该方法会将文件上传到指定的URL,并返回一个Promise对象,可以在then()方法中处理上传成功的结果,或在catch()方法中处理上传失败的结果。以
uniapp怎么上传file文件到服务器
2024-04-09

微信小程序接口请求多文件+参数上传、单文件+参数上传(formData形式) 微信小程序实现formData格式传参(亲测有效)

01.引入所需formData js文件 1.文件链接 链接: https://pan.baidu.com/s/1BDxx0-1KMAnkceXb45L5rg 提取码: 6ibp 2.引入使用 const FormData = requir
2023-08-17

微信小程序怎么实现多文件或图片上传

本文小编为大家详细介绍“微信小程序怎么实现多文件或图片上传”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么实现多文件或图片上传”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。html
2023-07-02

微信小程序开发文件上传功能怎么实现

这篇文章主要介绍了微信小程序开发文件上传功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发文件上传功能怎么实现文章都会有所收获,下面我们一起来看看吧。保存图片,我认为有两处需要保存 1、选
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录