欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

特色

上傳文件

下載文件

刪除文件

分享文件

查看文件

安全文件共享

說明

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

上傳文件時(shí),它會存儲在 Firebase 中,并為該文件生成一個(gè)唯一 ID,此 ID 用于訪問文件。

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

共享文件時(shí),共享文件的唯一 ID。此 ID 用于訪問文件。

文件的接收者可以使用文件的唯一 ID 訪問文件。

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

接收方收到文件后,會自動從 Firebase 存儲中刪除該文件。

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

如何使用

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

代碼審查

Firebase 存儲上傳代碼

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 存儲下載代碼

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ù)庫中刪除圖像
				ref.child(childSnapshot.key).remove();
				// 從存儲中刪除文件
				// 延遲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ù)庫字段編號中的每個(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ù)庫中保存文件元數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS實(shí)現(xiàn)鼠標(biāo)按下拖拽效果

    JS實(shí)現(xiàn)鼠標(biāo)按下拖拽效果

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)鼠標(biāo)按下拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JS創(chuàng)建對象幾種不同方法詳解

    JS創(chuàng)建對象幾種不同方法詳解

    這篇文章主要為大家詳細(xì)介紹了javascript創(chuàng)建對象的幾種不同方法
    2016-03-03
  • ES6 Promise對象的含義和基本用法分析

    ES6 Promise對象的含義和基本用法分析

    這篇文章主要介紹了ES6 Promise對象的含義和基本用法,結(jié)合實(shí)例形式分析了Promise的含義、功能、基本用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • ES6概念 Symbol.keyFor()方法

    ES6概念 Symbol.keyFor()方法

    這篇文章主要介紹了ES6概念 Symbol.keyFor()方法 ,需要的朋友可以參考下
    2016-12-12
  • underscore之Chaining_動力節(jié)點(diǎn)Java學(xué)院整理

    underscore之Chaining_動力節(jié)點(diǎn)Java學(xué)院整理

    本文通過文字說明與代碼的形式給大家介紹了underscore之Chaining的相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2017-07-07
  • Bootstrap列表組學(xué)習(xí)使用

    Bootstrap列表組學(xué)習(xí)使用

    這篇文章主要為大家詳細(xì)介紹了Bootstrap列表組的學(xué)習(xí)使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js 實(shí)現(xiàn)碰撞檢測的示例

    js 實(shí)現(xiàn)碰撞檢測的示例

    這篇文章主要介紹了js 實(shí)現(xiàn)碰撞檢測的示例,幫助大家更好的制作js特效,美化自身網(wǎng)頁,感興趣的朋友可以了解下
    2020-10-10
  • JS版元素周期表實(shí)現(xiàn)方法

    JS版元素周期表實(shí)現(xiàn)方法

    這篇文章主要介紹了JS版元素周期表實(shí)現(xiàn)方法,可實(shí)現(xiàn)基于javascript動態(tài)生成元素周期表的功能,點(diǎn)擊元素項(xiàng)可以在下方顯示對應(yīng)元素的各種常用屬性,需要的朋友可以參考下
    2015-08-08
  • JS實(shí)現(xiàn)打磚塊游戲

    JS實(shí)現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • offsetHeight在OnLoad中獲取為0的現(xiàn)象

    offsetHeight在OnLoad中獲取為0的現(xiàn)象

    需要獲取div的高度時(shí),往往需要用到offsetHeight,有時(shí)會碰到offsetHeight獲取到為0的現(xiàn)象,感興趣的朋友可以參考下面的代碼片段
    2013-07-07

最新評論