成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用axios上傳文件到阿里云對象文件存儲(chǔ)服務(wù)器oss

jas0n / 2374人閱讀

摘要:背景可用于圖片音視頻日志等海量文件的存儲(chǔ)。支持流式寫入和文件寫入兩種方式。這種方式的缺點(diǎn)是,文件要先上傳到應(yīng)用服務(wù)器,再上傳到,占用帶寬資源,過程雖然簡單易于操作但是比較繁瑣。這里是上面服務(wù)端返回的簽名對象上傳文件名

背景

OSS可用于圖片、音視頻、日志等海量文件的存儲(chǔ)。各種終端設(shè)備、Web網(wǎng)站程序、移動(dòng)應(yīng)用可以直接向OSS寫入或讀取數(shù)據(jù)。OSS支持流式寫入和文件寫入兩種方式。使用阿里云oss做文件存儲(chǔ)的時(shí)候,不可避免的涉及到文件的上傳,大概分為兩種方式:

服務(wù)端驗(yàn)證上傳

先將文件傳遞到應(yīng)用服務(wù)器,再由應(yīng)用服務(wù)器上傳至oss服務(wù)器,這種方式的優(yōu)點(diǎn)是簡單易懂,nodejs只需要按照文檔使用ali-oss中間件上傳就行,本文重點(diǎn)不放在這種方式,如果有需要可以私信我。這種方式的缺點(diǎn)是,文件要先上傳到應(yīng)用服務(wù)器,再上傳到oss,占用帶寬資源,過程雖然簡單易于操作但是比較繁瑣。

服務(wù)端簽名前端直傳

這種方式是我比較推薦使用的,但是需要自己對移動(dòng)端進(jìn)行簽名,官方的例子給出了一個(gè)php版本的簽名服務(wù)文件,同時(shí)上傳使用的是plupload這個(gè)功能強(qiáng)大,但是不支持模塊化使用的插件,于是經(jīng)過一番琢磨,將php版本的簽名服務(wù)改成了js版本,同時(shí)提供axios版本的文件上傳供大家參考,親測可行。

服務(wù)代碼:

const crypto =require("crypto")
async getSingature(ctx){
        ctx.status=200;
        const _config={...}//里面存放阿里云oss的配置參數(shù),不詳細(xì)說明,用的都應(yīng)該懂
        const OSSAccessKeyID=_config["spring.aliyun.oss.access-key-id"]
        const OSSAccessKeySecret=_config["spring.aliyun.oss.access-key-secret"]
        const OSSEndPoint=_config["spring.aliyun.oss.end-point"]
        const OSSBucketName=_config["spring.aliyun.oss.bucket-name"];
        let now=new Date();
        const expire=300;
        //簽名有效時(shí)間五分鐘,可自行設(shè)定
        const end = now.getTime()/1000 + expire;
        //過期時(shí)間
        let expiration=new Date((now.getTime()/1000+expire)*1000);
        //oss服務(wù)器時(shí)間格式iso
        expiration=expiration.toISOString();
        //上傳目錄
        const dir= ""
        //上傳的限制規(guī)則
        const condition=["content-length-range",0,1048576000]
        const start=["start-with","key",dir];
        const conditions=[condition]
        const arr={
            expiration,
            conditions
        }
        //上傳策略(規(guī)則對象轉(zhuǎn)json字符串)
        const policy=JSON.stringify(arr);
        //進(jìn)行base64編碼
        const base64_policy= (new Buffer(policy)).toString("base64");
        
        const string_to_sign=base64_policy;
        //使用crypto簽名
        const signature=crypto.createHmac("sha1",     OSSAccessKeySecret).update(string_to_sign).digest().toString("base64");
        const host="http://"+OSSBucketName+"."+OSSEndPoint.split("http://")[1];
        const accessid=OSSAccessKeyID;
        //返回結(jié)果給前端
        return {
            accessid,
            signature,
            policy:base64_policy,
            expire:end,
            dir,
            host
        }
    }

前端上傳:
注意:oss一次只能上傳一個(gè)文件(只有一個(gè)key),可以循環(huán)執(zhí)行post,key為上傳到oss后的文件名。signatureObj這里是上面nodejs服務(wù)端返回的簽名對象

    var file=ducument.getElementById("file").files[0] 
    var formData = new FormData();
    formData.append("key","上傳文件名");
    formData.append("name",file.name)
    formData.append("policy",signatureObj.policy)
    formData.append("OSSAccessKeyId",signatureObj.accessid)
    formData.append("success_action_status","200")
    formData.append("callback","")
    formData.append("signature",signatureObj.signature)
    formData.append("file",file.file)
    axios({
    url:url,
    method:"post",
    data:formdata,
    headers: { "Content-Type": "multipart/form-data" }
})

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95474.html

相關(guān)文章

  • 使用axios上傳文件阿里對象文件存儲(chǔ)務(wù)器oss

    摘要:背景可用于圖片音視頻日志等海量文件的存儲(chǔ)。支持流式寫入和文件寫入兩種方式。這種方式的缺點(diǎn)是,文件要先上傳到應(yīng)用服務(wù)器,再上傳到,占用帶寬資源,過程雖然簡單易于操作但是比較繁瑣。這里是上面服務(wù)端返回的簽名對象上傳文件名 背景 OSS可用于圖片、音視頻、日志等海量文件的存儲(chǔ)。各種終端設(shè)備、Web網(wǎng)站程序、移動(dòng)應(yīng)用可以直接向OSS寫入或讀取數(shù)據(jù)。OSS支持流式寫入和文件寫入兩種方式。使用阿里...

    劉玉平 評論0 收藏0
  • oss web直傳 務(wù)器簽名 - vue版本

    摘要:前言為了減輕服務(wù)器壓力,采用直傳的方式,直接把資源圖片,文件,視頻等上傳到阿里云服務(wù)器。這個(gè)是需要觸發(fā)這個(gè)回調(diào)來通知服務(wù)器操作結(jié)果。服務(wù)器端同事調(diào)的,通過接口返回給前端的。這個(gè)就是簽名,最關(guān)鍵的。的的使用如下結(jié)束這樣就搞定了。 前言: 為了減輕服務(wù)器壓力,采用web直傳的方式,直接把資源(圖片,文件,視頻等)上傳到阿里云oss服務(wù)器。但是阿里只提供 plupload.js 環(huán)境下的 d...

    Sunxb 評論0 收藏0
  • 淺析前端上傳

    摘要:項(xiàng)目上也用到很多上傳文件的地方,七牛云,阿里云,訊飛上傳都接觸過,所以在這里做一個(gè)記錄,總結(jié)一下前端上傳的幾種方式。類型的文件名七牛云上傳淺析是一個(gè)基于七牛開發(fā)的前端。 showImg(https://segmentfault.com/img/bVbvibu?w=1920&h=1080); 圖片,音頻,視頻等等這幾種常見的資源類型,如果需要從前端上傳到服務(wù)端,有幾種方式呢?不妨回顧一下...

    terro 評論0 收藏0
  • 圖片直傳阿里OSS方案

    摘要:和數(shù)據(jù)直傳到相比,以上方法有三個(gè)缺點(diǎn)上傳慢。端向服務(wù)端請求簽名,然后直接上傳,不會(huì)對服務(wù)端產(chǎn)生壓力,而且安全可靠。規(guī)定返回?cái)?shù)據(jù)的格式,當(dāng)前默認(rèn)返回圖片信息寬度高度,可獲取更多數(shù)據(jù)。 背景 每個(gè)OSS的用戶都會(huì)用到上傳服務(wù)。Web端常見的上傳方法是用戶在瀏覽器或app端上傳文件到應(yīng)用服務(wù)器,然后應(yīng)用服務(wù)器再把文件上傳到OSS。 showImg(https://segmentfault.c...

    imtianx 評論0 收藏0
  • SpringBoot 整合 阿里OSS 存儲(chǔ)服務(wù),快來免費(fèi)搭建一個(gè)自己的圖床

    摘要:筆主很早就開始用阿里云存儲(chǔ)服務(wù)當(dāng)做自己的圖床了。阿里云對象存儲(chǔ)文檔,本篇文章會(huì)介紹到整合阿里云存儲(chǔ)服務(wù)實(shí)現(xiàn)文件上傳下載以及簡單的查看。 Github 地址:https://github.com/Snailclimb/springboot-integration-examples(SpringBoot和其他常用技術(shù)的整合,可能是你遇到的講解最詳細(xì)的學(xué)習(xí)案例,力爭新手也能看懂并且能夠在看完...

    鄒強(qiáng) 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<