最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JavaScript實(shí)現(xiàn)文件共享型網(wǎng)站

 更新時(shí)間:2022年11月07日 16:22:38   作者:海擁  
Any?Share?是一種簡(jiǎn)單、輕量、快速的文件共享服務(wù)。使用?Javascript?編寫(xiě),并搭建在?Firebase?平臺(tái)。本文將利用它實(shí)現(xiàn)創(chuàng)建文件共享型網(wǎng)站,感興趣的可以了解一下

Any Share 是一種簡(jiǎn)單、輕量、快速的文件共享服務(wù)。使用 Javascript 編寫(xiě),并搭建在 Firebase 平臺(tái)。

特色

上傳文件

下載文件

刪除文件

分享文件

查看文件

安全文件共享

說(shuō)明

Any Share 使用 Firebase 來(lái)存儲(chǔ)文件,使用 Firebase 實(shí)時(shí)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)文件的元數(shù)據(jù)。

上傳文件時(shí),它會(huì)存儲(chǔ)在 Firebase 中,并為該文件生成一個(gè)唯一 ID,此 ID 用于訪(fǎng)問(wèn)文件。

該文件的元數(shù)據(jù)存儲(chǔ)在 Firebase 實(shí)時(shí)數(shù)據(jù)庫(kù)中。此元數(shù)據(jù)包括文件的 url 和文件的唯一 ID。

共享文件時(shí),共享文件的唯一 ID。此 ID 用于訪(fǎng)問(wèn)文件。

文件的接收者可以使用文件的唯一 ID 訪(fǎng)問(wèn)文件。

當(dāng)接收方使用唯一 ID 接收到文件時(shí),文件會(huì)從 Firebase 存儲(chǔ)中下載并顯示給接收方。

接收方收到文件后,會(huì)自動(dòng)從 Firebase 存儲(chǔ)中刪除該文件。

這樣文件就可以安全地共享了。

如何使用

  • 訪(fǎng)問(wèn) anyshare。
  • 上傳一個(gè)文件。
  • 等待文件上傳。
  • 與接收者共享文件的唯一 ID。
  • 接收方可以使用文件的唯一 ID 訪(fǎng)問(wèn)文件。
  • 接收方收到文件后,會(huì)自動(dòng)從 Firebase 存儲(chǔ)中刪除該文件。

代碼審查

Firebase 存儲(chǔ)上傳代碼

function uploadFile() {
    if(document.getElementById("file").value != ""){
    var uploadtext = document.getElementById("upload").innerHTML;
  document.getElementById("upload").innerHTML = "Uploading...";
  var file = document.getElementById("file").files[0];
  var storageRef = firebase.storage().ref("images/" + file.name);
  var uploadTask = storageRef.put(file);
  uploadTask.on('state_changed', function (snapshot) {
    var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
    console.log('Upload is ' + progress + '% done');
  }, function (error) {
    console.log(error.message);
    document.getElementById("upload").innerHTML = "Upload Failed";
  }, function () {


    uploadTask.snapshot.ref.getDownloadURL().then(function (downloadURL) {
      console.log('File available at', downloadURL);
      saveMessage(downloadURL);
    });
  });
}
else{
    var uploadtext = document.getElementById("upload").innerHTML;
    document.getElementById("upload").innerHTML = "Please select a file";
    // 2秒后清空
    setTimeout(function(){
        document.getElementById("upload").innerHTML = uploadtext;
    }
    , 2000);
}
}

Firebase 存儲(chǔ)下載代碼

function showfile() {
	var uniqueId = document.getElementById("unique").value;
	if (uniqueId == "") {
		alert("Unique Id is empty\n Please enter a Unique Id");
		return;
	}
	var ref = firebase.database().ref("image");
	var flag = 0;
	ref.on("value", function(snapshot) {
		snapshot.forEach(function(childSnapshot) {
			var childData = childSnapshot.val();
			if (childData.number == uniqueId) {

				flag = 1;
				window.open(childData.url, "_blank");
				// 然后從數(shù)據(jù)庫(kù)中刪除圖像
				ref.child(childSnapshot.key).remove();
				// 從存儲(chǔ)中刪除文件
				// 延遲5秒運(yùn)行
				setTimeout(function() {
					var storageRef = firebase.storage().refFromURL(childData.url);
					storageRef.delete().then(function() {
						ref.child(childSnapshot.key).remove();
						// 文件刪除成功
					}).catch(function(error) {});
				}, 15000);
			}
		});
	});
}

生成的唯一 ID

function createUniquenumber(){
    // 為尚未在數(shù)據(jù)庫(kù)字段編號(hào)中的每個(gè)圖像創(chuàng)建一個(gè)唯一的5位數(shù)
    var number = Math.floor(10000 + Math.random() * 90000);
    var ref = firebase.database().ref("image");
    ref.on("value", function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
        var childData = childSnapshot.val();
        if (childData.number == number){
            createUniquenumber();
        }
        });
    });
    return number;
}

在 Firebase 實(shí)時(shí)數(shù)據(jù)庫(kù)中保存文件元數(shù)據(jù)的代碼

function saveMessage(downloadURL) {
    var newMessageRef = messagesRef.push();
    var unique= createUniquenumber();
    // 隱藏接收文件 div
    var x = document.getElementById("downloadiv");
    x.style.display = "none";
    var showUnique = document.getElementById("ShowUniqueID");
    var shU=document.getElementById("showunique");
    shU.value=unique;
    showUnique.style.display = "block";

    newMessageRef.set({
        url: downloadURL,
        number: unique
    });
    document.getElementById("upload").innerHTML = "Upload Successful";
    // 使文件輸入為空
    document.getElementById("file").value = "";

    }

總結(jié)

在本教程中,我們解釋了如何創(chuàng)建一個(gè)文件共享型的 Web 應(yīng)用程序。

參考

到此這篇關(guān)于基于JavaScript實(shí)現(xiàn)文件共享型網(wǎng)站的文章就介紹到這了,更多相關(guān)JavaScript文件共享網(wǎng)站內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Web安全之XSS攻擊與防御小結(jié)

    Web安全之XSS攻擊與防御小結(jié)

    這篇文章主要介紹了Web安全之XSS攻擊與防御小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 微信小程序?qū)崿F(xiàn)二維碼簽到考勤系統(tǒng)

    微信小程序?qū)崿F(xiàn)二維碼簽到考勤系統(tǒng)

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)二維碼簽到考勤系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 一篇文章弄懂javascript中的執(zhí)行棧與執(zhí)行上下文

    一篇文章弄懂javascript中的執(zhí)行棧與執(zhí)行上下文

    這篇文章主要給大家介紹了關(guān)于javascript中執(zhí)行棧與執(zhí)行上下文的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用javascript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • ES6 Promise對(duì)象的含義和基本用法分析

    ES6 Promise對(duì)象的含義和基本用法分析

    這篇文章主要介紹了ES6 Promise對(duì)象的含義和基本用法,結(jié)合實(shí)例形式分析了Promise的含義、功能、基本用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • csdn 批量接受好友邀請(qǐng)

    csdn 批量接受好友邀請(qǐng)

    說(shuō)實(shí)話(huà),加好友的太多了,怎么辦,想個(gè)批量的辦法吧
    2009-02-02
  • 動(dòng)態(tài)刷新 dorado樹(shù)的js代碼

    動(dòng)態(tài)刷新 dorado樹(shù)的js代碼

    動(dòng)態(tài)刷新 dorado樹(shù)的js代碼
    2009-06-06
  • javascript移動(dòng)端 電子書(shū) 翻頁(yè)效果實(shí)現(xiàn)代碼

    javascript移動(dòng)端 電子書(shū) 翻頁(yè)效果實(shí)現(xiàn)代碼

    這篇文章主要介紹了javascript移動(dòng)端 電子書(shū) 翻頁(yè)效果實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • javascript 得到文件后綴名的思路及實(shí)現(xiàn)

    javascript 得到文件后綴名的思路及實(shí)現(xiàn)

    在上傳文件時(shí),常常要對(duì)文件的類(lèi)型即對(duì)文件的后綴名進(jìn)行判斷,用javascript可以很容易的做到這一點(diǎn)。用Javascript解析一個(gè)帶絕對(duì)路徑的文件名并得到后綴名的方法有很多種,這里列出一種,以供參考。
    2013-07-07
  • 一文快速學(xué)會(huì)創(chuàng)建uni-app項(xiàng)目并了解pages.json文件

    一文快速學(xué)會(huì)創(chuàng)建uni-app項(xiàng)目并了解pages.json文件

    這篇文章主要給大家介紹了如何創(chuàng)建uni-app項(xiàng)目并了解pages.json文件的相關(guān)資料,pages.json文件用來(lái)對(duì)uni-app進(jìn)行全局配置,決定頁(yè)面文件的路徑、窗口樣式、原生的導(dǎo)航欄、底部的原生tabbar等,需要的朋友可以參考下
    2023-10-10
  • three.js開(kāi)發(fā)3d地圖的實(shí)現(xiàn)示例

    three.js開(kāi)發(fā)3d地圖的實(shí)現(xiàn)示例

    本文主要介紹了three.js開(kāi)發(fā)3d地圖的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

乐至县| 朝阳县| 孟州市| 泰来县| 章丘市| 张掖市| 民权县| 蕉岭县| 花莲县| 仲巴县| 饶平县| 红桥区| 怀远县| 东丰县| 绥中县| 镇沅| 顺义区| 二手房| 静海县| 洪洞县| 唐山市| 八宿县| 耒阳市| 林口县| 育儿| 阿克陶县| 定远县| 会理县| 安吉县| 巴彦淖尔市| 漳州市| 金平| 红安县| 巩义市| 柯坪县| 许昌县| 吉木乃县| 资溪县| 绥德县| 双流县| 柯坪县|