微信小程序实现图片上传到服务器

实现图片上传我们需要使用chooseImg和uploadFile这两个api。

微信小程序中的chooseImg是一个API,用于在用户相册或相机中选择图片上传。它可以让用户在小程序中选择上传图片,以便进行下一步操作,例如将其发送给朋友或将其上传到服务器。

使用chooseImg API,您可以通过以下步骤实现在小程序中选择图片上传:

1.在wxml文件中添加一个按钮或其他可触摸元素,以触发选择图片的操作。

2.在js文件中使用wx.chooseImage(options)函数来触发选择图片的操作。

3.在options参数中,可以设置maximum选项以限制用户选择的图片数量,可以设置sizeType选项以限制图片的大小,可以设置sourceType选项以限制图片源(相册或相机)。

4.选择完成后,可以使用wx.uploadFile(options)函数将图片上传到服务器。

下面是一个使用chooseImg API的示例代码:

wxml文件:

复制代码
<button bindtap="chooseImage">选择图片</button>

js文件:

php 复制代码
Page({
  chooseImage: function () {
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: function (res) {
        var tempFilePaths = res.tempFilePaths
        wx.uploadFile({
          url: 'https://example.com/upload',
          filePath: tempFilePaths[0],
          name: 'image',
          formData: {
            'user': 'test'
          },
          success: function (res) {
            var data = res.data
            // do something
          },
          fail: function (res) {
            console.log('上传失败')
          }
        })
      }
    })
  }
})

此代码包括选择图片和上传图片两个步骤,并将选择的图像上传到您的服务器。解析如下

++1.调用wxchooselmage方法,该方法用于在微信小程序中选择图片
2.wx.chooselmage方法的count参数设置为1,表示选择一张图片
3.sizeType参数设置为original,compressed,表示选择原图和压缩图两种尺寸的图片。
4.sourceType参数设置为album,camera,表示选择相册和相机两种来源的图片。
5.success回调函数,当图片选择成功时执行
6.通过res.tempFilePaths获取到选中图片的临时文件路径
7.调用wx.uploadFile方法,将选中图片的临时文件路径作为参数传递给该方法
8.wxuploadFile方法用于在微信小程序中上传文件
9 url参数设置为'https://example.com/upload,表示要上传到的URL地地上
filePath参数设置为tempFilePaths0,表示要上传的文件路径,使0用的是选中图片的临时文件路径。
10.name参数设置为'image",表示在服务器接收到的文件的name参数的值为image
表示在服务器接收到的文件的formData参数设置为fuser:test},formData参数的值为fuser:test。11.success回调函数,当文件上传成功时执行
12.通过res.data获取到服务器返回的数据8.fail回调函数,当文件上传失败时执行。
输出上传失败。++

++后端我采用的是php代码++

php 复制代码
<?php
// 设置允许跨域访问的域名,*表示允许任意域名访问
header('Access-Control-Allow-Origin: *');

// 设置允许跨域访问的请求方法,*表示允许任意方法
header('Access-Control-Allow-Methods: *');

// 设置允许跨域访问的请求头,*表示允许任意请求头
header('Access-Control-Allow-Headers: *');

 date_default_timezone_set("Asia/Shanghai"); //设置时区
$code = $_FILES['file'];//获取小程序传来的图片
if(is_uploaded_file($_FILES['file']['tmp_name'])) {  
    //把文件转存到你希望的目录(不要使用copy函数)  
    $uploaded_file=$_FILES['file']['tmp_name'];  
    $username = "share_img";
    //我们给每个用户动态的创建一个文件夹  
    $user_path=$_SERVER['DOCUMENT_ROOT']."wx/wximg/".$username;  
    //判断该用户文件夹是否已经有这个文件夹  
    if(!file_exists($user_path)) {  
        //mkdir($user_path); 
        mkdir($user_path,0777,true); 
        
    }  

    //$move_to_file=$user_path."/".$_FILES['file']['name'];  
    $file_true_name=$_FILES['file']['name'];  
    $move_to_file=$user_path."/".$file_true_name;//strrops($file_true,".")查找"."在字符串中最后一次出现的位置  
    //echo "$uploaded_file   $move_to_file";  
    if(move_uploaded_file($uploaded_file,iconv("utf-8","GBK",$move_to_file))) {  
        echo $_FILES['file']['name']; 
 
    } else {  
        echo "上传失败".date("Y-m-d H:i:sa"); 
 
    }  
} else {  
    echo "上传失败".date("Y-m-d H:i:sa");  
}  
 
 
?>
相关推荐
电梯界知识分子9 分钟前
景德镇老房重新设计阶段规划楼梯与电梯,1.7m×1.6m空间装400kg观光电梯,棕色框架茶色玻璃适配中式装修
大数据·服务器·前端·网络·家用电梯
qeen8711 分钟前
【Linux】Ext2文件系统介绍
linux·服务器
镭封29 分钟前
AI文字转语音能制作多人对白吗?角色分配操作指南
人工智能·小程序·音视频·语音识别·媒体
学页官方36 分钟前
部署实战】教培系统私有化部署全流程:从云服务器到上线验收
运维·服务器
小嘉丶学长39 分钟前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
指艺1 小时前
VirtualBox安装fedora完成后重启,仍提示安装fedora
运维·服务器
zhongben_keji1 小时前
批发商城APP怎么做:价格引擎、授信台账与资金合规的设计要点
ios·小程序·web app
时空节拍AI数字人2 小时前
博物馆数字人讲解系统设计:知识库 schema、展项联动协议与时序控制
java·服务器·前端·人工智能·ai·语音识别
开开心心就好2 小时前
电脑小说阅读器,支持朗读和自定义皮肤
服务器·开发语言·javascript·算法·pdf·c#·音视频
Smoothcloud润云2 小时前
GPU远程纳管节点频繁离线?心跳、DNS与时钟排障实战
运维·服务器·开发语言·人工智能·php·gpu算力