小程序/Vant UI 实现文件的上传

小程序/Vant UI 实现文件的上传

第一次接触小程序上传的时候,自己经过一些实验测试并记录下来以供大家学习。

使用vant UI的官网地址:Vant Weapp - 轻量、可靠的小程序 UI 组件库

如何不使用UI框架的前提下或许有些许出入,但不影响整体的实现细节。

引入官网上的代码:

     第一次看上面代码的时候会存在些许疑虑,懂的不是十分的透彻。现在也是懵懵懂懂,主要知道实现的功能也没仔细关注实现的细节。afterRead是上传成功的回调函数,fileList是让图片可以回显到上传文件的组件,可以设置固定的URL来实现回显。 

    以下的代码是我对上面代码的部分修改来调用后台提供的接口。

Page({
  data: {
    fileList: [],
  },

  afterRead(event) {
    let that = this
    const { file } = event.detail;
    // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
    wx.uploadFile({
      url: 'http://127.0.0.3/upload_file.php', //接口的提供地址
      filePath: file.url,
      name: 'file',
      formData: { user: 'test' },
      success(res) {
        // 上传完成需要更新 fileList
          let fileList = []
          let path = "http://127.0.0.3/" + res.data
          fileList.push({ url: path });
          console.log(fileList);
          that.setData({ fileList: fileList });
        // console.log(res.data);
      },
    });
  },

});

  这里的res.data就是我提供的文件名称,用拼接字符串的方法来提供url来给fileList赋值。赋值完成后就可以实现图片的回显了,实现的细节如下图所示:

 为了大家能够复原实验,将后台的接口代码展示出来供大家学习。

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
)  //文件大小B && ($_FILES["file"]["size"] < 2000000)
  {
  if ($_FILES["file"]["error"] > 0) //出错
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else //上传文件到临时系统
    {
    //echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    //echo "Type: " . $_FILES["file"]["type"] . "<br />";
    //echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    //echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"])) //文件存在
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else //移动文件到指位置
      {
      //获得UUID
      $uuid = uuid();
      $uuid = str_replace('-','',$uuid);
      $extension = explode(".",$_FILES["file"]["name"] );
      $key = count($extension) - 1;
      $suffix = $extension[$key];
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $uuid.".".$suffix);
	  echo "upload/" . $uuid.".".$suffix; //Stored in: " . "upload/" . $uuid.$suffix
	  //echo "Stored in: " . "upload/". $uuid.".".$suffix;
      }
    }
  }
else
  {
  echo "Invalid file"; //文件类型错误
  }
  
 function  uuid()  
{  
    $chars = md5(uniqid(mt_rand(), true));  
    $uuid = substr ( $chars, 0, 8 ) . '-'
            . substr ( $chars, 8, 4 ) . '-' 
            . substr ( $chars, 12, 4 ) . '-'
            . substr ( $chars, 16, 4 ) . '-'
            . substr ( $chars, 20, 12 );  
    return $uuid ;  
}
?>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序可以使用Vant UI组件库来实现轻量级且美观的UI效果。首先,你需要在项目中引入Vant组件库。你可以通过npm安装vant-weapp包,并在app.json或者页面的json文件中注册组件。例如,在app.json中添加以下代码: "usingComponents": { "van-button": "@vant/weapp/button/index" } 然后,在wxml文件中使用组件。比如,你可以在wxml文件中添加以下代码来使用Vant的按钮组件: <van-button plain type="primary">van按钮</van-button> 这样就可以在微信小程序中使用Vant UI组件了。如果你在使用开发者工具创建的项目中遇到了问题,可以在project.config.json文件中添加一些配置,以确保开发者工具可以正确索引到npm依赖的位置。具体的配置可以参考Vant的文档。 #### 引用[.reference_title] - *1* [微信小程序使用VantUI框架](https://blog.csdn.net/weixin_43111269/article/details/125652214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [微信小程序引入 vant ui组件](https://blog.csdn.net/yangshengwei230612/article/details/130141720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [微信小程序中使用vant框架,方法步骤清晰,简单适用](https://blog.csdn.net/qq_44890362/article/details/122288546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值