国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能

這篇具有很好參考價(jià)值的文章主要介紹了微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、實(shí)現(xiàn)原理

  1. wx.showActionSheet():顯示操作菜單,選擇是從相冊(cè)選擇還是相機(jī)拍攝照片
  2. wx.chooseImage():從本地相冊(cè)選擇圖片或使用相機(jī)拍照。
  3. wx.uploadFile():將本地資源上傳到服務(wù)器??蛻舳税l(fā)起一個(gè) HTTPS POST 請(qǐng)求,其中 content-type 為 multipart/form-data。
  4. wx.previewMedia(): 預(yù)覽圖片和視頻。

二、代碼

upload.wxml

<view class="study-title">圖片上傳原理</view>
<view class="show-img-box">
    <view class="img-item-box" wx:for="{{imgList}}" wx:key="*this" data-src="{{item}}" data-src-list="{{imgList}}" bindtap="clickImg">
        <image class="img-item" src="{{item}}" />
    </view>
    <view class="upload" bindtap="chooseImgType">
        <view class="img-upload"></view>
    </view>
</view>

upload.wxss

/* pages/upload/upload.wxss */
.study-title {
  width: 100vw;
  margin: 50rpx 0;
  font-size: 40rpx;
  font-weight: 800;
  text-align: center;
}
.show-img-box {
  width: 600rpx;
  display: flex;
  flex-wrap: wrap;
  margin: 0 auto;
}

.img-item-box {
  width: 184rpx;
  height: 184rpx;
  margin: 4px;
  background-color: #ccc;
}

.img-item {
    width: 184rpx;
    height: 184rpx;
}
.upload {
  margin: 4px;
  width: 184rpx;
  height: 184rpx;
  background: rgba(203, 224, 208, 0.5);
  border-radius: 5rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}
.img-upload {
  width: 120rpx;
  height: 120rpx;
  background-image: url(https://pro-core.babycdn.com/2021/aosmith/lottery/images2020/watersystem/case/robot/img_upload.png);
  background-repeat: no-repeat;
  background-size: cover;
}

upload.js

// pages/upload/upload.js
Page({
  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {
    imgList: [],  // 由于沒有可用的服務(wù)器域名,因此定義此數(shù)據(jù)用于展示上傳的圖片,以演示圖片預(yù)覽功能
    imgFilePaths: [], // 上傳的圖片存放路徑,有可用的服務(wù)器域名用此數(shù)據(jù)渲染
    showSelect: false, // 是否顯示選擇框
    host: "https://5blog.com/Api", // 服務(wù)器域名,此處為錯(cuò)誤域名
  },
  // 彈出操作菜單,選擇獲取圖片的方式
  chooseImgType() {
    // 顯示操作菜單
    wx.showActionSheet({
      itemList: ["從相冊(cè)選擇", "拍照"],
      success: (res) => {
        if (res.tapIndex == 0) {
          this.chooseImg("album");
        } else if (res.tapIndex == 1) {
          this.chooseImg("camera");
        }
      },
    });
  },
  // 選擇圖片
  chooseImg(type) {
    let { imgFilePaths } = this.data;
    wx.chooseImage({
      // 從本地相冊(cè)選擇照片或使用相機(jī)拍照
      count: 9, // 最多可以選擇的圖片張數(shù), 默認(rèn)9
      sizeType: ["original", "compressed"], // 所選圖片的尺寸,默認(rèn)原圖和壓縮圖都可以
      sourceType: [type], // 選擇圖片的來源,默認(rèn)相冊(cè)和相機(jī)都可以
      success: async (res) => {
        // 接口調(diào)用成功的回調(diào)
        // console.log("res", res);
        // res.tempFilePaths是臨時(shí)文件路徑數(shù)組,數(shù)組內(nèi)的元素可以直接作為src使用
        const tempFilePaths = res.tempFilePaths;
        this.setData({
          imgList: res.tempFilePaths,
        });
        let tempLength = 9 - imgFilePaths.length;
        let tempFilePaths_ = tempFilePaths.splice(0, tempLength);
        // 得到所有上傳成功后的圖片url組成的數(shù)組
        let imgUrlArr = await Promise.all(
          // 實(shí)現(xiàn)上傳所有圖片到服務(wù)器
          tempFilePaths_.map((item, index) => {
            // 返回每張圖片的上傳結(jié)果
            return this.updateImg(item, index);
          })
        );
        console.log("imgUrlArr", imgUrlArr);
        // 根據(jù)需求補(bǔ)充其他內(nèi)容
      },
      fail: (err) => {
        console.log(type);
        // 接口調(diào)用失敗的回調(diào)
        console.log("圖片選取上傳錯(cuò)誤", err);
      },
      complete: () => {
        // 接口調(diào)用結(jié)束的回調(diào)(調(diào)用成功、失敗都會(huì)執(zhí)行)
      },
    });
  },
  // 實(shí)現(xiàn)將單張圖片上傳服務(wù)器,上傳成功返回圖片url,上傳失敗返回false
  updateImg(src, index = 0) {
    wx.showLoading({
      title: "上傳中...",
      mask: true,
    });
    // 將本地資源上傳到服務(wù)器接口,客戶端發(fā)起一個(gè)post請(qǐng)求
    // 其中content-type為multipart/form-data
    return new Promise((resolve, reject) => {
      wx.uploadFile({
        url: this.data.host + "/Attach/Index/upload", // 開發(fā)者服務(wù)器地址
        filePath: src, // 要上傳文件資源的路徑(本地路徑)
        header: {
          "content-type": "multipart/form-data", // 默認(rèn)值
        },
        name: "img", // 文件對(duì)應(yīng)的key,開發(fā)者在服務(wù)端通過這個(gè)key獲取文件的二進(jìn)制內(nèi)容
        formData: {
          // http請(qǐng)求中其他額外的form data
          type: "image",
          index: index,
        },
        // 上傳成功的回調(diào)
        success: function (res) {
          console.log("res", res);
          if (res && res.data && !res.data.error) {
            let img = JSON.parse(res.data);
            resolve(img.data);
          } else {
            wx.showToast({
              title: "圖片提交失敗",
              icon: "none",
              duration: 1500,
            });
            resolve(false);
          }
        },
        complete: function (res) {
          wx.hideLoading();
        },
      });
    });
  },
  // 實(shí)現(xiàn)圖片預(yù)覽
  clickImg(e) {
    let src = e.currentTarget.dataset.src;
    let sources = e.currentTarget.dataset.srcList;
    console.log(sources);
    sources = sources.map((item) => {
      return {
        url: item, // 鏈接
        type: "image", // 默認(rèn)類型是圖片
      };
    });
    // 預(yù)覽圖片和視頻接口
    wx.previewMedia({
      sources: sources,
    });
  },
});

三、效果演示

這里進(jìn)行了真機(jī)調(diào)試以演示以上代碼的實(shí)際運(yùn)行效果。
此處選擇了從相冊(cè)選擇
微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能,微信原生,微信,前端,微信小程序,小程序,javascript
微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能,微信原生,微信,前端,微信小程序,小程序,javascript
微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能,微信原生,微信,前端,微信小程序,小程序,javascript
微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能,微信原生,微信,前端,微信小程序,小程序,javascript
微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能,微信原生,微信,前端,微信小程序,小程序,javascript文章來源地址http://www.zghlxwxcb.cn/news/detail-586293.html

到了這里,關(guān)于微信原生實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖片上傳功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • thinkphp6/8+微信小程序 - 詳解點(diǎn)擊拍照或上傳圖片到服務(wù)器功能,tp+微信小程序+php技術(shù)進(jìn)行前端上傳圖像到服務(wù)端全過程效果,基于thinkphp和小程序進(jìn)行拍攝上傳圖像教程(詳細(xì)源代碼

    thinkphp6/8+微信小程序 - 詳解點(diǎn)擊拍照或上傳圖片到服務(wù)器功能,tp+微信小程序+php技術(shù)進(jìn)行前端上傳圖像到服務(wù)端全過程效果,基于thinkphp和小程序進(jìn)行拍攝上傳圖像教程(詳細(xì)源代碼

    在thinkphp6、thinkphp8和微信小程序前后端下,實(shí)現(xiàn)小程序拍照片上傳到tp后端服務(wù)器,小程序前端上傳圖像到php服務(wù)端詳細(xì)教程,支持多圖批量上傳、上傳校驗(yàn)大小、圖片類型、自定義上傳目錄、自定義命名等功能,可改造成上傳到阿里云oss、七牛云等平臺(tái)。 提供前端、后端完

    2024年04月24日
    瀏覽(48)
  • 原生JS實(shí)現(xiàn)圖片裁剪功能

    原生JS實(shí)現(xiàn)圖片裁剪功能

    功能介紹:圖片通過原生input上傳,使用canvas進(jìn)行圖片裁剪。 裁剪框限制不允許超出圖片范圍,圖片限制了最大寬高(自行修改要的尺寸),點(diǎn)擊確認(rèn)獲取新的base64圖片數(shù)據(jù) 注:fixed布局不適用該方案,若是fixed布局請(qǐng)查看另一篇文章 效果圖: 上代碼

    2024年02月11日
    瀏覽(34)
  • 前端如何實(shí)現(xiàn)本地圖片上傳?

    對(duì)于學(xué)習(xí)前端的小伙伴都有一個(gè)困惑,就是平常想上手小項(xiàng)目,但礙于不想購(gòu)買服務(wù)器,實(shí)踐受到了限制。 一般我選擇node.js搭建服務(wù)器,畢竟基于JavaScript語(yǔ)言,簡(jiǎn)直不是一家人不進(jìn)一家門。 但是,剛學(xué)node.js只會(huì)鏈接數(shù)據(jù)庫(kù)進(jìn)行增刪改查,圖片上傳簡(jiǎn)直就是渣渣…… 現(xiàn)在,

    2024年02月05日
    瀏覽(15)
  • 微信小程序生成菊花碼,通過Java修改中間圖片為上傳的圖片,含前端使用方法

    場(chǎng)景: 在微信小程序環(huán)境下,用戶上傳個(gè)人頭像,生成個(gè)人的微信小程序菊花維碼,可以無限申請(qǐng)并生成二維碼,然后二維碼中間的圓形為用戶自己上傳的頭像,最后可以通過生成的二維碼掃碼進(jìn)入個(gè)人簡(jiǎn)介頁(yè)面。 因?yàn)閳D片搗騰了一些時(shí)間,記錄一下,類似問題給的時(shí)間都

    2024年02月13日
    瀏覽(137)
  • uniapp小程序?qū)崿F(xiàn)上傳圖片功能,并顯示上傳進(jìn)度

    uniapp小程序?qū)崿F(xiàn)上傳圖片功能,并顯示上傳進(jìn)度

    效果圖: 實(shí)現(xiàn)方法: 一、通過uni.chooseMedia(OBJECT)方法,拍攝或從手機(jī)相冊(cè)中選擇圖片或視頻。 官方文檔鏈接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia 二、使用uni.uploadFile(OBJECT)方法上傳文件。 官方文檔鏈接: https://uniapp.dcloud.net.cn/api/request/network-file.html#uploadfile 三、使

    2024年02月12日
    瀏覽(45)
  • uni-app實(shí)現(xiàn)圖片上傳功能

    uni-app實(shí)現(xiàn)圖片上傳功能

    效果 代碼 ?

    2024年02月13日
    瀏覽(108)
  • Android相冊(cè)選擇圖片、相機(jī)拍照上傳功能實(shí)現(xiàn)(上)

    Android相冊(cè)選擇圖片、相機(jī)拍照上傳功能實(shí)現(xiàn)(上)

    先上效果圖 下面就來說一下相冊(cè)選擇圖片和相機(jī)拍照的實(shí)現(xiàn) 相冊(cè)選擇圖片很簡(jiǎn)單,只需要通過 Intent 設(shè)置拉起就可以了 Intent 拉起相冊(cè) /** 打開相冊(cè) @param type 打開類型區(qū)分碼(type是我用來區(qū)分回調(diào)的) / private void openGallery(int type) { Intent gallery = new Intent(Intent.ACTION_PICK); galler

    2024年04月16日
    瀏覽(27)
  • JAVA通過阿里云OSS存儲(chǔ)實(shí)現(xiàn)圖片上傳功能

    首先我們需要在阿里云注冊(cè)賬號(hào),實(shí)名認(rèn)證后開通OSS功能,點(diǎn)擊進(jìn)入OSS功能的管理平臺(tái) 進(jìn)入概覽頁(yè)面后,點(diǎn)擊Bucket列表,創(chuàng)建一個(gè)Bucket(相當(dāng)于一個(gè)存放文件的文件夾) ?關(guān)鍵是要獲得下面幾個(gè)關(guān)鍵的信息,只有擁有這些信息才能連接上這個(gè)Bucket進(jìn)行操作: 添加對(duì)應(yīng)依賴 ?

    2024年02月05日
    瀏覽(26)
  • 使用Vue + FormData + axios實(shí)現(xiàn)圖片上傳功能實(shí)戰(zhàn)

    使用Vue + FormData + axios實(shí)現(xiàn)圖片上傳功能實(shí)戰(zhàn)

    前言 上節(jié)回顧 上一小節(jié)中,我們添加了 Vue-router 的路有數(shù)據(jù),這些數(shù)據(jù)都將是后續(xù)實(shí)戰(zhàn)課程中的真實(shí)路由數(shù)據(jù)了。同時(shí)引入了 ElementUI 的 el-menu 做為左側(cè)菜單的組件,但本專欄的特點(diǎn)就是遇到第三方功能和組件,自己盡量也要實(shí)現(xiàn)一遍,所以,在文章末尾又自己實(shí)現(xiàn)了一個(gè)

    2024年02月09日
    瀏覽(26)
  • 13 使用Vue + FormData + axios實(shí)現(xiàn)圖片上傳功能實(shí)戰(zhàn)

    13 使用Vue + FormData + axios實(shí)現(xiàn)圖片上傳功能實(shí)戰(zhàn)

    前言 上節(jié)回顧 上一小節(jié)中,我們添加了 Vue-router 的路有數(shù)據(jù),這些數(shù)據(jù)都將是后續(xù)實(shí)戰(zhàn)課程中的真實(shí)路由數(shù)據(jù)了。同時(shí)引入了 ElementUI 的 el-menu 做為左側(cè)菜單的組件,但本專欄的特點(diǎn)就是遇到第三方功能和組件,自己盡量也要實(shí)現(xiàn)一遍,所以,在文章末尾又自己實(shí)現(xiàn)了一個(gè)

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包