之前公司要做一個斷點續傳的業務,找了許多都沒有找到合適的,都是殘次不全的,終於讓我遇到一個基於百度的 webuploader 的斷點續傳。
原作者: 斷點續傳(上傳)( https://www.somethingwhat.com/detail?id=deccc98bb1df57fc),那時候真感覺是大牛啊。
然后呢,真的很好用,但是不是Net core 版本的,我又不好意思叫原作者移植一個Net core 的版本,所以,我就移植了一個Net core 的版本,思路沒有變化,就是支持Net core了,希望有人能用到。
如果Net core 有更好的斷點續傳方式,還請告知一下。
思路還是根據文件的md5值,作為斷點續傳的依據,上傳文件時接口請求一下服務器上是否有上傳過,如果有,則接着傳;沒有就從第一片開始上傳。
主要是需要前端支持分片,對一個大文件進行分片。
- 前端用百度的webUpload 上傳,斷點續傳的思路:根據文件的md5值去服務器上檢查一下,是否有文件切片,如果有就跳過服務器上的最大片數接着傳,無文件切片,則從第一片(+1)開始上傳,代碼截圖如下:
-
對應的代碼都注釋,還是不截圖了吧、
-
后端主要就三個主方法,1.獲取指定文件的已上傳的最大文件塊(GetMaxChunk) 2.文件分塊上傳 (ChunkUpload) 3.合並文件(MergeFiles),其他方法只是進行一個簡單的封裝,不要讓這三個方法巨大無比。
源碼已經開源到github了,地址為:https://github.com/YPTopMan/FileUpload
還有一個數據庫文檔管理的工具:https://github.com/YPTopMan/DBManger-NetCore
再次感謝,大神的 net framework 的斷點續傳,太厲害了。