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

前端阿里云OSS直傳,微信小程序版本

這篇具有很好參考價值的文章主要介紹了前端阿里云OSS直傳,微信小程序版本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

網(wǎng)絡上許多的文章資料,全是使用阿里云官方的SDK,ali-oss插件去做直傳。可是各位素未謀面的朋友要注意,這個SDK它支持web環(huán)境使用,也就是PC端瀏覽器。

項目環(huán)境切換到微信小程序,是無法使用這種方式的,當然官方也有給出微信小程序直傳的文檔,繼續(xù)往下看。

支持配置OSS直傳的callback參數(shù),這是其它文章中沒用到的


官方:如何使用ali-oss進行直傳https://help.aliyun.com/document_detail/64041.html?spm=a2c4g.383954.0.0.43c25e89vo4jkS

官方:微信小程序OSS直傳https://help.aliyun.com/document_detail/92883.html?spm=a2c4g.31925.0.0.24de344egXVqTI

代碼:

酒過三巡我還是少說話,多貼代碼。并且把一些踩坑的地方告訴大家。繼續(xù)往下看。

首先需要下載三個庫。

注意:官方文檔是讓我們使用import { Base64 } from 'js-base64';? ?
可是它會它會報錯?。?!根本用不了。
所以需要換成import base64 from 'base-64';import utf8 from 'utf8'

npm install?crypto-js --save

npm install?base-64 --save

npm install?utf8 --save


crypto-js:是阿里官方的簽名庫
base-64、utf8:是用來轉碼,配合crypto-js使用的


簽名不都是后端的事情嗎?沒錯大部分是后端。

但是我在官方文檔看到客戶端也可以簽名,然后這么隨口一說。

我親愛的后端同事便說:客戶端(前端)也可以簽名,那就你自己簽名吧。

配置callback(可選,根據(jù)后端要求來決定是否需要)

為什么需要使用callback,這就是后端的騷操作。
他要我們把文件順利傳到OSS后,再讓OSS去請求他的接口。
他接口會去做一些業(yè)務邏輯,比如改文件的重命名。

而callback則是配置,后端處理業(yè)務邏輯的接口地址、接請求參數(shù)。


直傳OSS配置callback是有格式要求的,并且微信小程序端、web端,callback的配置格式要求還不一樣。
這里可能是因為用戶們很少用到callback參數(shù),官方文檔寫得也不準確。
大家按照我代碼來,指定是沒問題的。文章來源地址http://www.zghlxwxcb.cn/news/detail-471907.html

import crypto from 'crypto-js'
import base64 from 'base-64'
import utf8 from 'utf8'
<script>
methods: {

    chooseAvatarEvent(event) {
      const { avatarUrl } = event.detail

      this.getFormDataParams().then(() => {
        this.uploadFile(avatarUrl, 'tmp/', e => {})
      })
    },

    // 計算簽名。
    computeSignature(accessKeySecret, canonicalString) {
      console.log(crypto.enc)
      return crypto.enc.Base64.stringify(crypto.HmacSHA1(canonicalString, accessKeySecret))
    },

    getPolicyBase64() {
      const date = new Date()
      date.setHours(date.getHours() + 1)
      const policyText = {
        expiration: date.toISOString(), // 設置policy過期時間。
        conditions: [
          // 限制上傳大小。
          ['content-length-range', 0, 1024 * 1024 * 1024],
        ],
      }
      return policyText
    },

    async getFormDataParams() {
      // 獲取STS臨時token,這是后端接口做的,找親愛的后端
      const credentials = await queryOssGetStsToken()
      const policyText = this.getPolicyBase64()
      const uft8Str = utf8.encode(JSON.stringify(policyText))
      const policy = base64.encode(uft8Str)
      const signature = this.computeSignature(credentials.AccessKeySecret, policy)

      const user_id = this.userInfo.user_id

      const callback = {
        // 設置回調請求的服務器地址,且要求必須為公網(wǎng)地址。
        // 后端的接口地址:https://www.baidu.com/api/xxxx
        callbackUrl: credentials.callbackUrl,
        // 設置回調請求消息頭中Host的值,即您的服務器配置的Host值。
        // host: 'yourHost',
        // 設置發(fā)起回調時請求body的值。
        callbackBody: 'bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&type=avatar&user_id=' +
						user_id,
        // 設置發(fā)起回調請求的Content-Type。
        callbackBodyType: 'application/x-www-form-urlencoded',
      }
      const uft8Str_callback = utf8.encode(JSON.stringify(callback))
      const base64_callback = base64.encode(uft8Str_callback)
      const formData = {
        OSSAccessKeyId: credentials.AccessKeyId,
        signature,
        policy,
        'success_action_status': '200',
        'x-oss-security-token': credentials.SecurityToken,
        callback: base64_callback,
      }
      this.formData = formData
      console.log('formData===', this.formData)
    },

    uploadFile(filePath, dir, successc, failc) {
      const _this = this
      // 獲取上傳的文件類型
      let fileTypeIndex = filePath.lastIndexOf('.')
      let fileType = filePath.substring(fileTypeIndex)

      //圖片名字 可以自行定義,     這里是采用當前的時間戳 + 150內的隨機數(shù)來給圖片命名的
      // const aliyunFileKey = dir + new Date().getTime() + Math.floor(Math.random() * 150) + '.png';
      const aliyunFileKey = dir + new Date().getTime() + Math.floor(Math.random() * 150) + fileType

      uni.uploadFile({
        // 注意:阿里云OSS的訪問地址,并不是接口請求域名
        url: 'http://pxxxxx-xxxx-xxx.oss-cn-shenzhen.aliyuncs.com', //阿里云OSS訪問地址
        filePath: filePath, //要上傳文件資源的路徑
        name: 'file', //必須填file
        formData: {
          'key': aliyunFileKey,
          ...this.formData
        },
        callback: this.formData.callback,
        success: function(res) {
          const resObj = JSON.parse(res.data)
          _this.userInfo.avatar_id = resObj.data.id
          _this.userInfo.avatar = resObj.data.url
          console.log('上傳成功===', resObj)
        },
        fail: function(err) {
         
          // err.wxaddinfo = aliyunServerURL
          // failc(err)
        },
      })
    }

  }
</script>
<template>
    <view class="item-panel flex-1">
	    <u-image :src="userInfo.avatar" width="80rpx" height="80rpx" shape="circle"></u-image>
	    <button class="upload-box" open-type="chooseAvatar" @chooseavatar="chooseAvatarEvent"></button>
        <view class="ml-20 flex ai-center">
	        <u-icon name="arrow-right"></u-icon>
	    </view>
    </view>
</template>

<style lang="scss" scoped>
    .item-panel {
		display: flex;
		position: relative;

		.upload-box {
			position: absolute;
			width: 100%;
			height: 100%;
			opacity: 0;
			right: 0;
			top: 0;
		}
	}
</style>

到了這里,關于前端阿里云OSS直傳,微信小程序版本的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 如何使用阿里云OSS進行前端直傳

    在使用阿里云OSS進行前端直傳時,首先我們需要去阿里云官網(wǎng)注冊自己的存儲桶,然后申請相關的accessKeyId和accessKeySecret,然后新建一個桶,為這個桶命名以及選擇對應的地區(qū)。 然后可以根據(jù)自己的業(yè)務,封裝對應的組件,以下是根據(jù)我自己的項目,所封裝的上傳組件,所用

    2024年02月21日
    瀏覽(18)
  • 微信小程序純前端從阿里云OSS下載json數(shù)據(jù)-完整版

    微信小程序純前端從阿里云OSS下載json數(shù)據(jù)-完整版

    因為云開發(fā)開始收費(貌似很久了),準備改造在以前的小程序,數(shù)據(jù)轉到oss上,小程序使用原生,不算專業(yè)領域, 所以先百度.... 網(wǎng)上的教程真的是千篇一律,大部分開局就是require(\\\'ali-oss\\\');?好點的npm install ali-oss --save開局,拼湊操作到最后發(fā)現(xiàn) 要用云開發(fā),因為云開發(fā)才

    2024年02月12日
    瀏覽(15)
  • 如何使用阿里云OSS進行前端直傳以及分片上傳

    在使用阿里云OSS進行前端直傳時,首先我們需要去阿里云官網(wǎng)注冊自己的存儲桶,然后申請相關的accessKeyId和accessKeySecret,然后新建一個桶,為這個桶命名以及選擇對應的地區(qū)。 然后可以根據(jù)自己的業(yè)務,封裝對應的組件,以下是根據(jù)我自己的項目,所封裝的上傳組件,所用

    2024年02月21日
    瀏覽(22)
  • uniapp - [小程序 / H5網(wǎng)頁] “純前端“ 將文件上傳到阿里云 OSS,全端通用的阿里云 OSS 直傳音視頻、圖片、word、excel、ppt、office 文檔(全程無需后端穩(wěn)定可靠)

    uniapp - [小程序 / H5網(wǎng)頁] “純前端“ 將文件上傳到阿里云 OSS,全端通用的阿里云 OSS 直傳音視頻、圖片、word、excel、ppt、office 文檔(全程無需后端穩(wěn)定可靠)

    網(wǎng)上的教程亂七八糟各種坑,而且 uniapp 各個端都是不同的教程,對于新手來說真的無從下手。 本文站在新手小白的角度, 實現(xiàn) uniapp 小程序 / H5 網(wǎng)頁等平臺的開發(fā)中,“前端直傳” 上傳文件到阿里云oss對象存儲的詳細教程,通用的 “OSS 上傳器”,幾乎全平臺都可以使用!

    2024年02月12日
    瀏覽(73)
  • 前端通過STS方式直傳至阿里云OSS(包含文件上傳、下載和自動刷新stsToken)

    最近項目業(yè)務需要實現(xiàn)一個資源管理的功能,就簡單學習了一下前端怎么使用阿里云OSS。 原本這些事情都是后端實現(xiàn)的,但這樣子有許多缺點,比如文件上傳需要走兩次,先上傳到后端,再由后端上傳至阿里云OSS,既占用帶寬也浪費時間;此外,前端還不能獲取到真正的上傳

    2024年01月19日
    瀏覽(31)
  • 微信小程序文件直接上傳阿里云OSS

    第一步 配置Bucket跨域訪問 第二步 微信小程序配置域名白名單 以上兩步,請參考阿里云官網(wǎng), 如何在微信小程序環(huán)境下將文件上傳到OSS_對象存儲 OSS-阿里云 https://help.aliyun.com/document_detail/92883.html 安裝依賴 wx-oss-upload 然后創(chuàng)建自己的上傳方法,引用 wx-oss-upload ?然后在選取文

    2024年02月11日
    瀏覽(23)
  • 微信小程序將資源上傳阿里云OSS

    ? ? 我們在實際業(yè)務中經(jīng)常能遇到將各種資源上傳到云服務器,這樣做第一是能更好的管理我們的比如圖片資源,視頻,音頻資源等,同時也能節(jié)約公司的網(wǎng)絡帶寬,減少各種資源隨著時間的推移資源越來越多造成服務器的硬盤壓力過大。還有一個重要的原因是可以保護我們

    2024年02月13日
    瀏覽(22)
  • 已解決:前端直傳阿里oss報錯跨域問題,“No ‘Access-Control-Allow-Origin‘”,這個錯誤基本就是在阿里的開放平臺沒做規(guī)則配置(附我封裝的上傳源碼)

    已解決:前端直傳阿里oss報錯跨域問題,“No ‘Access-Control-Allow-Origin‘”,這個錯誤基本就是在阿里的開放平臺沒做規(guī)則配置(附我封裝的上傳源碼)

    就直接上阿里oss管理后臺去增加一個跨域規(guī)則:見圖片,特詳細 ?配置成這樣點確定就好了,就這么簡單 標題其實就已經(jīng)是答案了,但是以我的性格,我還是要介紹介紹案發(fā)背景,如果你比較著急,可以直接跳到解決方案那里看: 本來我就是個干前端的,也干安卓端(為啥

    2024年02月11日
    瀏覽(22)
  • 微信小程序上傳文件(圖片)至阿里云OSS,包含后端代碼示例。

    微信小程序上傳文件(圖片)至阿里云OSS,包含后端代碼示例。

    ps:本文較為詳細,需要有耐心的閱讀,要是圖片看不清楚可以下載到本地放大查看。 寫這篇博客的主要目的是因為serverless架構下直接上傳圖片只能轉base64,且body大小有限制 一、在阿里云創(chuàng)建RAM用戶與角色 1.為什么要使用RAM用戶? 云賬號 AccessKey 是您訪問阿里云 API 的密鑰,具

    2024年02月04日
    瀏覽(27)
  • 微信小程序使用阿里云oss設置上傳文件的content-type

    圖片文件上傳到阿里云oss的默認訪問content-type是jpge,這個格式在瀏覽器不能直接打開,需要手動設置上傳的content-type 參考鏈接 UploadTask wx.uploadFile(Object object) OSS調用PostObject用于通過HTML表單上傳的方式將文件(Object)上傳到指定存儲空間(Bucket)。 阿里OSS 上傳圖片 springboo

    2024年02月12日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包