[小程序]向服务器上传图片和从服务器下载图片

本例的服务器基于flask,配置flask可以参见[Flask]上传多个文件到服务器icon-default.png?t=N7T8https://blog.csdn.net/weixin_37878740/article/details/128435136?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170581653516800185854860%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170581653516800185854860&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-5-128435136-null-null.nonecase&utm_term=flask&spm=1018.2226.3001.4450

一、上传图片

        在这里使用POST协议将图片上传到服务器,服务器代码为:

@app.route('/uploader', methods=['POST'])
def uploader():
    i=0
    for img in request.files.getlist('photo'):
        suffix = '.' + img.filename.split('.')[-1] # 获取文件后缀名
        img_path = './static/uploads/' + str(int(time.time())) +'_p'+str(i) + suffix # 拼接路径
        img.save(img_path) #保存图片
        print(img_path)
        i=i + 1 #序号戳记++
    return {'msg':'ok'}

        微信端代码为:

postImg(e){
    const that = this
    //选择图片
    wx.chooseImage({
      count:1,  //选择张数
      sizeType:['compressed'],   //是否压缩图
      sourceType:['album','camera'],  //数据源
      success(res){
        let tempFilePath = res.tempFilePaths; //图片的本地路径
        that.upload(that,tempFilePath); //上传图片
      }
    })
  },

        使用微信提供的wx.chooseImage选择图片,其中upload为单独封装的函数,实质上是一个Post函数,如下:

//上传函数
  upload(page,path){
    wx.showToast({
      icon:'loading',
      title: '正在上传',
    })
    wx.uploadFile({
      filePath: path[0],
      name: 'photo',
      url: '链接/uploader',
      header: {"Content-Type": "multipart/form-data"},
      //formData:{'session_token':wx.getStorageSync('session_token')},  //放置token
      success(res) {
        console.log(res.data);},
      fail(res){
        console.log(res)}
    })
  },

        需要注意的是,这个方法只会上传第一张图片,如果需要多张上传,需要在let tempFilePath = res.tempFilePaths;处对图片进行循环解析

二、获取图片

        其思路为:设置一个图片路径字符串变量,通过get指令让其等于服务器中的图片地址即可。

        flask端代码为:

@app.route('/getImg',methods=['GET'])
def getImg():
    idx = request.args.get("index",default=1,type=int)      #参数名,默认参数,参数类型
    ImgPath = 'static/src/{}.jpg'.format(idx)
    return "{}".format(ImgPath)

        微信端的代码为:

getImg(e){
    const that = this
     wx.request({
       url:'链接',
       method:'GET',
       data:{
          index:1,
       },
       success(res) {
         console.log(res.data);
         that.setData({imgUrl: '服务器绝对路径/'+res.data });
       },
       fail(res){
         console.log(res)
       }
     });  
   },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/338001.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】UICollectionView的基本使用

使用UITableView作为表格来展示数据完全没有问题,但仍有许多局限性,对于一些更加复杂的布局样式,就有些力不从心了 比如,UITableView只允许表格每一行只能显示一个cell,而不能在一行中显示多个cell,对于这…

项目管理该考哪个证书❓NPDP还是软考❓

有小伙伴在纠结是要考NPDP认证呢还是考软考呢❓ 今天小编要给大家好好说说NPDP认证❗️ 💡NPDP全称New Product Development Professional,也就是产品经理国际资格认证。 🔥NPDP是国际公认的为一的新产品开发专业认证,是集理论、方…

【神经网络】火箭点火发射-诠释一场数据与学习的奇妙之旅

火箭点火发射来理解神经网络的故事细节 在一个充满科技气息的研究室里,一群科学家们正在忙碌地准备着一次重要的火箭点火发射。这次发射不仅是一次航天探索的壮丽征程,更是一场利用神经网络处理数据的智慧之旅。 在火箭发射的背后,神经网络…

使用freessl为网站获取https证书及配置详细步骤

文章目录 一、进入freessl网站二、修改域名解析记录三、创建证书四、配置证书五、服务启动 一、进入freessl网站 首先进入freessl网站,需要注册一个账号 freessl网站 进入网站后填写自己的域名 接下来要求进行DCV配置 二、修改域名解析记录 到域名管理处编辑域名…

MySQL基础笔记(8)多表查询

一.多表关系介绍 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也会存在着各种联系,分为如下3类: 一对…

【算法详解】力扣162.寻找峰值

​ 目录 一、题目描述二、思路分析 一、题目描述 力扣链接:力扣162.寻找峰值 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个…

Vulnhub靶机:FunBox 2

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox 2(10.0.2.27) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.com/funbo…

【LeetCode每日一题】2788. 按分隔符拆分字符串

2024-1-20 文章目录 [2788. 按分隔符拆分字符串](https://leetcode.cn/problems/split-strings-by-separator/)思路: 2788. 按分隔符拆分字符串 思路: 对于每个单词,使用一个可变字符串 StringBuilder 来构建拆分后的单词。初始时&#xff0…

蓝桥杯单片机零基础到国二经验分享

我参加的是第十三届蓝桥杯大赛,从最开始的零基础,毫无头绪,到拿下国二,颇有体会,在这里将我的备赛经验分享给大家,希望可以帮到一些正在备赛的蓝桥杯er 目录 一. 蓝桥杯-单片机组介绍 二 . 零基础到国二历程 客观题&…

web架构师编辑器内容-图层拖动排序功能的开发

新的学习方法 用手写简单方法实现一个功能然后用比较成熟的第三方解决方案即能学习原理又能学习第三方库的使用 从两个DEMO开始 Vue Draggable Next: Vue Draggable NextReact Sortable HOC: React Sortable HOC 列表排序的三个阶段 拖动开始(dragstart&#x…

【机器学习】李梅的餐饮帝国:美食与数据中隐藏的秘密

从小,李梅就对美食有着浓厚的兴趣。她常常看着母亲在厨房里忙碌,熟练的手法、诱人的香气,都让她对烹饪产生了极大的好奇。随着年龄的增长,她对美食的热爱与日俱增,最终决定投身餐饮业。 李梅的第一家餐厅开在了一个繁…

JVM:Java类加载机制

Java类加载机制的全过程: 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始, 这是为了支持Java…

vue2 点击按钮下载文件保存到本地(后台返回的zip压缩流)

// import ./mock/index.js; // 该项目所有请求使用mockjs模拟 去掉mock页面url下载 console.log(res, res)//token 是使页面不用去登录了if (res.file) {window.location.href Vue.prototype.$config.VUE_APP_BASE_IDSWAPI Vue.prototype.$config.VUE_APP_IDSW /service/mode…

VRPSolverEasy:支持VRP问题快速建模的精确算法Python包

文章目录 前言一步步安装免费版主要模块介绍1. depot point2. customer point3. links4. vehicle type VRPTW 算例数据说明模型建立输出求解状态及结果 前言 VRPSolverEasy 是用于车辆路径问题(VRP)的最先进的分支切割和定价算法求解器1,它的…

基于Servlet建立表白墙网站

目录 一、设计思想 二、设计表白墙页面(前端--VSCode) 1、效果图 2、html部分(网页上有哪些内容) 3、css部分(页面内容的具体样式) 4、js部分(页面行为) 三、借助Servlet实现客…

攻防世界——Mysterious

运行就是一个要你输入的题型,这种题我们要么得到password,要么直接不管这个得到flag int __stdcall sub_401090(HWND hWnd, int a2, int a3, int a4) {int v4; // eaxchar Source[260]; // [esp50h] [ebp-310h] BYREF_BYTE Text[257]; // [esp154h] [eb…

4.postman批量运行及json、cvs文件运行

一、批量运行collection 1.各个接口设置信息已保存,在collection中点击run collection 2.编辑并运行集合 集合运行时,单独上传图片时报错。需修改postman设置 二、csv文件运行 可新建记事本,输入测试数据,后另存为新的文本文件&…

call_once 单例模式 Singleton / condition_variable 与其使用场景

一、call_once 单例模式 Singleton 大家可以先看这篇文章&#xff1a;https://zh.cppreference.com/w/cpp/thread/call_once /*std::call_oncevoid call_once( std::once_flag& flag, Callable&& f, Args&&... args ); */ #include <iostream> #i…

【算法与数据结构】474、LeetCode一和零

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题要找strs数组的最大子集&#xff0c;这个子集最多含有 m m m个0和 n n n个1。本题也可以抽象成一个…

云仓酒庄的品牌雷盛红酒LEESON分享从事酒行业有前途吗?

化在全球都有着悠久的传承文化&#xff0c;每逢传统节日&#xff0c;新朋好友相聚庆贺&#xff0c;酒在好多场合都是不可或缺的选项。酒的消费群体也是十分庞大&#xff0c;有不少朋友问云仓酒庄&#xff0c;从事酒的行业能不能挣钱&#xff0c;有没有前途&#xff1f;回答好这…
最新文章