摘要:什么是阿里云簡(jiǎn)單地理解,阿里云以下簡(jiǎn)稱(chēng)就是一個(gè)儲(chǔ)存空間比較大的硬盤(pán)。一般儲(chǔ)存空間在范圍內(nèi)根據(jù)自己的需要去購(gòu)買(mǎi),而且便宜在阿里云官網(wǎng)可以購(gòu)買(mǎi)。你完全可以把這個(gè)當(dāng)成私人網(wǎng)盤(pán)來(lái)用。我這里就利用官方的來(lái)制作一個(gè)簡(jiǎn)單的文件上傳系統(tǒng),非常簡(jiǎn)單的網(wǎng)盤(pán)。
什么是阿里云OSS?
簡(jiǎn)單地理解,阿里云OSS(以下簡(jiǎn)稱(chēng)OSS)就是一個(gè)儲(chǔ)存空間比較大的硬盤(pán)。
一般儲(chǔ)存空間在40GB-400TB范圍內(nèi)
根據(jù)自己的需要去購(gòu)買(mǎi),而且便宜!
在阿里云官網(wǎng)可以購(gòu)買(mǎi)。
我自己做學(xué)習(xí),測(cè)試,就買(mǎi)了個(gè)40GB的,剛好搞活動(dòng)0.9元2年有效期!
就算不搞活動(dòng),大家也買(mǎi)得起,40GB,5元6個(gè)月,10元1年。少抽一包煙就可以買(mǎi)了...
像一些比較小的網(wǎng)站,40GB真的夠用了。
視頻,音樂(lè)網(wǎng)站就需要比較大的儲(chǔ)存空間。
OSS到底用來(lái)干嘛的?
OK,再簡(jiǎn)單地說(shuō),就是你的網(wǎng)站日常更新需要存放的一些文件(圖片、視頻、文檔、音頻、安裝包)等
,這些文件,你總不能放在服務(wù)器或者虛擬主機(jī)里面吧?
虛擬主機(jī)或者服務(wù)器的空間可是有限的,小則100MB,大則也就10GB-50GB這樣
所以,如果你的網(wǎng)站經(jīng)常更新,或者平常發(fā)布的內(nèi)容包含的文件非常多并且很占空間
那就不適合用虛擬主機(jī)來(lái)存放文件了,而且虛擬主機(jī)的加載速度有限
OSS的加載速度比虛擬主機(jī)好。特別是視頻網(wǎng)站和音樂(lè)網(wǎng)站,你把視頻文件或者音樂(lè)上傳到
虛擬主機(jī),時(shí)間久了,你的虛擬主機(jī)就沒(méi)什么空間了,而OSS空間大,可以用很久,放很多東西。
重要的是,虛擬主機(jī)的價(jià)錢(qián)比OSS高很多。
簡(jiǎn)單來(lái)說(shuō),OSS是適合用來(lái)儲(chǔ)存網(wǎng)站的文件的(圖片、視頻、文檔、音頻、安裝包等),相當(dāng)于一個(gè)網(wǎng)盤(pán)了。而虛擬主機(jī)雖然也可以儲(chǔ)存文件,但是限制太多了,虛擬主機(jī)更適合用來(lái)運(yùn)行代碼,存放程序文件。
OSS則沒(méi)有運(yùn)行代碼的環(huán)境和能力。
以上說(shuō)了這么多了,相信第一次接觸OSS的人應(yīng)該明白了。
所以這次,我將給大家分享一下OSS的使用:
1、先開(kāi)通OSS,并購(gòu)買(mǎi)儲(chǔ)存包。
https://www.aliyun.com/produc...
2、然后進(jìn)入OSS控制臺(tái),新建bucket
接著獲取Access Key ID和Access Key Secret
我們點(diǎn)進(jìn)去我們建立好的bucket
就可以對(duì)你的OSS進(jìn)行管理了,比如綁定域名,OSS申請(qǐng)好了一般會(huì)給你分配一個(gè)域名,但是那個(gè)不是你自己的域名,如果你想要綁定自己的域名,就進(jìn)去域名綁定綁定即可。
還有文件管理,可以把你想要上傳的文件上傳到OSS,上傳成功后,點(diǎn)擊文件名,就可以看到這個(gè)文件的信息。
還可以獲得這個(gè)文件的地址,那么這個(gè)就是簡(jiǎn)單的外鏈系統(tǒng)了,通過(guò)OSS把文件上傳到這里,獲得外鏈,就這么簡(jiǎn)單。
你完全可以把這個(gè)OSS當(dāng)成私人網(wǎng)盤(pán)來(lái)用。
還有一些其他的設(shè)置可以自己去琢磨,OSS還提供了SDK供大家開(kāi)發(fā),接入自己的網(wǎng)站項(xiàng)目,實(shí)現(xiàn)云儲(chǔ)存,把網(wǎng)站的所有文件資源都儲(chǔ)存到OSS里面。
我這里就利用官方的DEMO來(lái)制作一個(gè)簡(jiǎn)單的文件上傳系統(tǒng),非常簡(jiǎn)單的網(wǎng)盤(pán)。
下面是截圖:
代碼:
index.html
OSS web直傳 里客云OSS上傳
get.php
format(DateTime::ISO8601); $pos = strpos($expiration, "+"); $expiration = substr($expiration, 0, $pos); return $expiration."Z"; } $id= "填寫(xiě)你的Access Key ID"; $key= "填寫(xiě)你的Access Key Secret"; $host = "填寫(xiě)你的EndPoint"; $now = time(); $expire = 30; //設(shè)置該policy超時(shí)時(shí)間是10s. 即這個(gè)policy過(guò)了這個(gè)有效時(shí)間,將不能訪問(wèn) $end = $now + $expire; $expiration = gmt_iso8601($end); $dir = "file_url/"; //最大文件大小.用戶可以自己設(shè)置 $condition = array(0=>"content-length-range", 1=>0, 2=>1048576000); $conditions[] = $condition; //表示用戶上傳的數(shù)據(jù),必須是以$dir開(kāi)始, 不然上傳會(huì)失敗,這一步不是必須項(xiàng),只是為了安全起見(jiàn),防止用戶通過(guò)policy上傳到別人的目錄 $start = array(0=>"starts-with", 1=>"$key", 2=>$dir); $conditions[] = $start; $arr = array("expiration"=>$expiration,"conditions"=>$conditions); //echo json_encode($arr); //return; $policy = json_encode($arr); $base64_policy = base64_encode($policy); $string_to_sign = $base64_policy; $signature = base64_encode(hash_hmac("sha1", $string_to_sign, $key, true)); $response = array(); $response["accessid"] = $id; $response["host"] = $host; $response["policy"] = $base64_policy; $response["signature"] = $signature; $response["expire"] = $end; //這個(gè)參數(shù)是設(shè)置用戶上傳指定的前綴 $response["dir"] = $dir; echo json_encode($response); ?>
其中你的EndPoint就是控制臺(tái)里面的bucket的域名
upload.js
accessid = "" accesskey = "" host = "" policyBase64 = "" signature = "" callbackbody = "" filename = "" key = "" expire = 0 g_object_name = "" g_object_name_type = "" now = timestamp = Date.parse(new Date()) / 1000; function send_request() { var xmlhttp = null; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp!=null) { serverUrl = "get.php" xmlhttp.open( "GET", serverUrl, false ); xmlhttp.send( null ); return xmlhttp.responseText } else { alert("Your browser does not support XMLHTTP."); } }; function check_object_radio() { var tt = document.getElementsByName("myradio"); for (var i = 0; i < tt.length ; i++ ) { if(tt[i].checked) { g_object_name_type = tt[i].value; break; } } } function get_signature() { //可以判斷當(dāng)前expire是否超過(guò)了當(dāng)前時(shí)間,如果超過(guò)了當(dāng)前時(shí)間,就重新取一下.3s 做為緩沖 now = timestamp = Date.parse(new Date()) / 1000; if (expire < now + 3) { body = send_request() var obj = eval ("(" + body + ")"); host = obj["host"] policyBase64 = obj["policy"] accessid = obj["accessid"] signature = obj["signature"] expire = parseInt(obj["expire"]) callbackbody = obj["callback"] key = obj["dir"] return true; } return false; }; function random_string(len) { len = len || 32; var chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"; var maxPos = chars.length; var pwd = ""; for (i = 0; i < len; i++) { pwd += chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd; } function get_suffix(filename) { pos = filename.lastIndexOf(".") suffix = "" if (pos != -1) { suffix = filename.substring(pos) } return suffix; } function calculate_object_name(filename) { if (g_object_name_type == "local_name") { g_object_name += "${filename}" } else if (g_object_name_type == "random_name") { suffix = get_suffix(filename) g_object_name = key + random_string(10) + suffix } return "" } function get_uploaded_object_name(filename) { if (g_object_name_type == "local_name") { tmp_name = g_object_name tmp_name = tmp_name.replace("${filename}", filename); return tmp_name } else if(g_object_name_type == "random_name") { return g_object_name } } function set_upload_param(up, filename, ret) { if (ret == false) { ret = get_signature() } g_object_name = key; if (filename != "") { suffix = get_suffix(filename) calculate_object_name(filename) } new_multipart_params = { "key" : g_object_name, "policy": policyBase64, "OSSAccessKeyId": accessid, "success_action_status" : "200", //讓服務(wù)端返回200,不然,默認(rèn)會(huì)返回204 "callback" : callbackbody, "signature": signature, }; up.setOption({ "url": host, "multipart_params": new_multipart_params }); up.start(); } var uploader = new plupload.Uploader({ runtimes : "html5,flash,silverlight,html4", browse_button : "selectfiles", //multi_selection: false, container: document.getElementById("container"), flash_swf_url : "lib/plupload-2.1.2/js/Moxie.swf", silverlight_xap_url : "lib/plupload-2.1.2/js/Moxie.xap", url : "http://oss.aliyuncs.com", filters: { mime_types : [ //設(shè)置允許上傳的文件類(lèi)型 { title : "Support files", extensions : "jpg,gif,png,bmp,Doc,Pdf,PPT,Xls,Docx,Pptx,Xlsx,txt,exe,apk,ipa,dmg,mp4,avi,Mov,Wmv,Mkv,F4v,flv,Rmvb,Mp3,Acc,Wav,php,html,htm,js,css,xml,py,java,ttf,otf,bat,dll,zip,rar" } ], max_file_size : "1024mb", //最大只能上傳1024mb的文件 prevent_duplicates : true //不允許選取重復(fù)文件 }, init: { PostInit: function() { document.getElementById("ossfile").innerHTML = ""; document.getElementById("postfiles").onclick = function() { set_upload_param(uploader, "", false); return false; }; }, FilesAdded: function(up, files) { plupload.each(files, function(file) { document.getElementById("ossfile").innerHTML += "" + file.name + " (" + plupload.formatSize(file.size) + ")" +""; }); }, BeforeUpload: function(up, file) { check_object_radio(); set_upload_param(up, file.name, true); }, UploadProgress: function(up, file) { var d = document.getElementById(file.id); d.getElementsByTagName("b")[0].innerHTML = "" + file.percent + "%"; var prog = d.getElementsByTagName("div")[0]; var progBar = prog.getElementsByTagName("div")[0] progBar.style.width= 2*file.percent+"px"; progBar.setAttribute("aria-valuenow", file.percent); }, FileUploaded: function(up, file, info) { if (info.status == 200) { document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML = "" +"
" +"
上傳完成!
https://oss.likeyunba.com/"+get_uploaded_object_name(file.name)+""; } else { document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML = info.response; } }, Error: function(up, err) { if (err.code == -600) { document.getElementById("console").appendChild(document.createTextNode(" 上傳失??!文件大小不能超過(guò)1024MB")); } else if (err.code == -601) { document.getElementById("console").appendChild(document.createTextNode(" 上傳失??!不支持上傳該文件后綴名")); } else if (err.code == -602) { document.getElementById("console").appendChild(document.createTextNode(" 上傳失敗!服務(wù)器已存在該文件")); } else { document.getElementById("console").appendChild(document.createTextNode(" Error xml:" + err.response)); } } } }); uploader.init();
OK,代碼就這么多,但是還有一個(gè)lib文件夾還有很多文件,我這里直接把代碼打包好。
https://pan.lanzou.com/i0jqwda
要注意的是,一定要保證bucket屬性CORS設(shè)置支持POST方法。因?yàn)檫@個(gè)HTML直接上傳到OSS,會(huì)產(chǎn)生跨域請(qǐng)求。必須在bucket屬性里面設(shè)置允許跨域。
上圖是在OSS控制臺(tái) - 基礎(chǔ)設(shè)置 - 跨域設(shè)置里面設(shè)置的,把POST打勾,其它填*號(hào)即可。
demo:
http://oss-demo.aliyuncs.com/...
微信掃碼查看demo:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/110129.html
摘要:什么是阿里云簡(jiǎn)單地理解,阿里云以下簡(jiǎn)稱(chēng)就是一個(gè)儲(chǔ)存空間比較大的硬盤(pán)。一般儲(chǔ)存空間在范圍內(nèi)根據(jù)自己的需要去購(gòu)買(mǎi),而且便宜在阿里云官網(wǎng)可以購(gòu)買(mǎi)。你完全可以把這個(gè)當(dāng)成私人網(wǎng)盤(pán)來(lái)用。我這里就利用官方的來(lái)制作一個(gè)簡(jiǎn)單的文件上傳系統(tǒng),非常簡(jiǎn)單的網(wǎng)盤(pán)。 什么是阿里云OSS?簡(jiǎn)單地理解,阿里云OSS(以下簡(jiǎn)稱(chēng)OSS)就是一個(gè)儲(chǔ)存空間比較大的硬盤(pán)。一般儲(chǔ)存空間在40GB-400TB范圍內(nèi)根據(jù)自己的需要去...
摘要:本篇文章就來(lái)分享一下兩款開(kāi)箱即用上手容易的圖床相冊(cè)程序和在線文件管理器目錄列表程序,由好友開(kāi)發(fā)并維護(hù),非常適合個(gè)人站長(zhǎng)用作圖床相冊(cè)和文件下載分享。雖然說(shuō)現(xiàn)在照片還有文件存儲(chǔ)等都可以上傳到網(wǎng)盤(pán)中,但是國(guó)內(nèi)的網(wǎng)盤(pán)與國(guó)外的網(wǎng)盤(pán)存儲(chǔ)還有點(diǎn)不一樣。以百度網(wǎng)盤(pán)與Dropbox對(duì)比為例,百度網(wǎng)盤(pán)頂多算是一個(gè)個(gè)人用來(lái)存放私人照片和文件的網(wǎng)絡(luò)硬盤(pán),如果用來(lái)分享的話很容易被百度限制或者取消下載。很多的個(gè)人站長(zhǎng)為...
摘要:這篇文章還是利用寶塔來(lái)搭建,寶塔服務(wù)器面板,一鍵全能部署及管理,送你元禮包,點(diǎn)我領(lǐng)取程序的功能如下支持第三方存儲(chǔ)目前支持阿里云,華為云,。iFileSpace 是一個(gè)在線個(gè)人文件管理工具,在線網(wǎng)盤(pán)程序,可快速一鍵搭建私人云盤(pán),支持本地存儲(chǔ)和對(duì)象存儲(chǔ)(目前支持阿里云oss,華為云obs,OneDrive), 如部署在公網(wǎng)服務(wù)器,可替代百度網(wǎng)盤(pán)等在線網(wǎng)盤(pán),自主搭建,數(shù)據(jù)完全自主管理!也可部署在家...
對(duì)于網(wǎng)站存儲(chǔ)的需求,大多數(shù)人還是以私有網(wǎng)盤(pán)為主,目的是為了可以存儲(chǔ)屬于私人的視頻、文檔、音頻等資料。但是,也有不少的人想要搭建一個(gè)公共的網(wǎng)盤(pán),主要目的是可以方便所有人查看、瀏覽和下載、使用,同時(shí)也提供視頻在線播放,變成影視站點(diǎn)。這樣的公共網(wǎng)盤(pán)服務(wù)搭建起來(lái)并不是很復(fù)雜,但是苦于高昂的存儲(chǔ)費(fèi)用,有的人盯上了超大容量且免費(fèi)的網(wǎng)盤(pán)服務(wù),例如OneDrive,團(tuán)隊(duì)版甚至可以達(dá)到TB以上,將OneDrive變...
想自建網(wǎng)盤(pán)但是又苦于數(shù)據(jù)太大,購(gòu)買(mǎi)大存儲(chǔ)容量的VPS主機(jī)價(jià)格太貴?不妨試試ZPan自建網(wǎng)盤(pán)存儲(chǔ)。ZPan致力于打造一款不限速的網(wǎng)盤(pán)系統(tǒng),因此采用客戶端直連云存儲(chǔ)的方式進(jìn)行設(shè)計(jì),即它不支持本地存儲(chǔ),你的所有數(shù)據(jù)都是存在第三方存儲(chǔ)商那里。目前ZPan支持所有兼容S3協(xié)議的云存儲(chǔ)平臺(tái),包括阿里云OSS 、騰訊云COS 、七牛云Kodo 、Ucloud US3(暫不支持自動(dòng)設(shè)置CORS) 、華為云OBS ...
閱讀 1664·2021-09-23 11:31
閱讀 955·2021-09-23 11:22
閱讀 1390·2021-09-22 15:41
閱讀 4115·2021-09-03 10:28
閱讀 2943·2019-08-30 15:55
閱讀 3572·2019-08-30 15:55
閱讀 2006·2019-08-30 15:44
閱讀 2743·2019-08-30 13:50