團(tuán)隊(duì)文件共享時(shí)猪半,通常有兩種場(chǎng)景降铸,一種是共享比較固定的文件在旱,比如工具軟件,還有一種是臨時(shí)需要分享的文件推掸,比如剛剛修改好的ppt excel桶蝎。
對(duì)于前者,用samba可以比較好的滿足需求谅畅。后一種情況用samba登渣,通常會(huì)導(dǎo)致文件夾下面大量無(wú)用的文件,既不方便管理毡泻,也不方便分享后的查找胜茧。
也有團(tuán)隊(duì)使用qq或者微信給對(duì)方傳文件,但是有些公司不一定允許開(kāi)qq牙捉。
在嘗試了多種方法后竹揍,我發(fā)現(xiàn)用uppy和tusd可以比較好的解決這個(gè)問(wèn)題。
tus是一種文件傳輸協(xié)議邪铲,支持?jǐn)帱c(diǎn)續(xù)傳芬位,并且有tusd這種現(xiàn)成的server,tusd用go實(shí)現(xiàn)带到,可以直接用編譯好的二進(jìn)制bin文件啟動(dòng)昧碉。
uppy是一個(gè)用js實(shí)現(xiàn)的文件上傳庫(kù),并且支持tus協(xié)議揽惹,配置起來(lái)非常簡(jiǎn)單被饿。
tusd配置啟動(dòng)
先下載tusd的bin文件到本地,然后啟動(dòng)
wget https://github.com/tus/tusd/releases/download/0.11.0/tusd_linux_amd64.tar.gz
tar xvf tusd_linux_amd64.tar.gz
cd tusd_linux_amd64
./tusd -dir ./data
這樣tusd就會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)data目錄搪搏,用于存放上傳的文件狭握,并且監(jiān)聽(tīng)1080端口。
uppy配置
直接把這個(gè)html文件放到nginx或者其他能夠支持靜態(tài)文件host的web工具下疯溺。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Uppy</title>
<link rel="stylesheet">
</head>
<body>
<div id="drag-drop-area"></div>
<script src="https://transloadit.edgly.net/releases/uppy/v1.0.0/uppy.min.js"></script>
<script>
var uppy = Uppy.Core()
.use(Uppy.Dashboard, {
inline: true,
target: '#drag-drop-area'
})
.use(Uppy.Tus, {endpoint: 'http://localhost:1080/files/'})
uppy.on('complete', (result) => {
console.log('Upload complete! We’ve uploaded these files:', result.successful)
})
</script>
</body>
</html>
使用
配置好uppy和tusd后论颅,比如在localhost:8000啟動(dòng)了uppy的靜態(tài)web,打開(kāi)后可以看到如下頁(yè)面囱嫩,點(diǎn)右上角+號(hào)從本地目錄選擇文件恃疯,或者直接拖拽進(jìn)來(lái)都可以,上傳完成后墨闲,會(huì)生成鏈接今妄,點(diǎn)擊link就可以獲取鏈接到剪貼板,然后通過(guò)郵件把文件地址發(fā)給對(duì)方即可。
總結(jié)
上面已經(jīng)實(shí)現(xiàn)了基本的文件分享功能盾鳞,其實(shí)還可以把tusd的啟動(dòng)做成service犬性,這樣就可以開(kāi)機(jī)啟動(dòng),uppy的js文件腾仅,也可以放到本地仔夺,這樣即使是cdn出了問(wèn)題,也可以正常使用攒砖。