亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于JavaScript實現文件共享型網站

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

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

特色

上傳文件

下載文件

刪除文件

分享文件

查看文件

安全文件共享

說明

Any Share 使用 Firebase 來存儲文件,使用 Firebase 實時數據庫來存儲文件的元數據。

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

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

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

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

當接收方使用唯一 ID 接收到文件時,文件會從 Firebase 存儲中下載并顯示給接收方。

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

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

如何使用

  • 訪問 anyshare。
  • 上傳一個文件。
  • 等待文件上傳。
  • 與接收者共享文件的唯一 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");
				// 然后從數據庫中刪除圖像
				ref.child(childSnapshot.key).remove();
				// 從存儲中刪除文件
				// 延遲5秒運行
				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(){
    // 為尚未在數據庫字段編號中的每個圖像創(chuàng)建一個唯一的5位數
    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 實時數據庫中保存文件元數據的代碼

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 = "";

    }

總結

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

參考

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

相關文章

  • JS實現鼠標按下拖拽效果

    JS實現鼠標按下拖拽效果

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

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

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

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

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

    ES6概念 Symbol.keyFor()方法

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

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

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

    Bootstrap列表組學習使用

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

    js 實現碰撞檢測的示例

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

    JS版元素周期表實現方法

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

    JS實現打磚塊游戲

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

    offsetHeight在OnLoad中獲取為0的現象

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

最新評論