日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

百度webuploader如何实现秒传与断点续传

發(fā)布時(shí)間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 百度webuploader如何实现秒传与断点续传 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

因?yàn)檫@是小眾需求,所以默認(rèn)沒有做在webuploader里面,而只是提供hook接口,讓用戶很簡(jiǎn)單的擴(kuò)展此功能。

那么,都有哪些重要的hook接口呢?

before-send-file此hook在文件發(fā)送之前執(zhí)行
before-file此hook在文件分片(如果沒有啟用分片,整個(gè)文件被當(dāng)成一個(gè)分片)后,上傳之前執(zhí)行。
after-send-file此hook在文件所有分片都上傳完后,且服務(wù)端沒有錯(cuò)誤返回后執(zhí)行。
...

對(duì)于秒傳來說,其實(shí)就是文件上傳前,把內(nèi)容讀取出來,算出md5值,然后通過ajax與服務(wù)端驗(yàn)證進(jìn)行驗(yàn)證, 然后根據(jù)結(jié)果選擇繼續(xù)上傳還是掉過上傳。

像這個(gè)操作里面有兩個(gè)都是異步操作,文件內(nèi)容blob讀取和ajax請(qǐng)求。所以這個(gè)handler必須是異步的,怎樣告訴組件此handler是異步的呢?只需要在hanlder里面返回一個(gè)promise對(duì)象就可以了,這樣webuploader就會(huì)等待此過程,監(jiān)聽此promise的完成事件,自動(dòng)繼續(xù)。

以下是此思路的簡(jiǎn)單實(shí)現(xiàn)。

Uploader.register({
    'before-send-file': 'preupload'
}, {
    preupload: function( file ) {
        var me = this,
            owner = this.owner,
            server = me.options.server,
            deferred = WebUploader.Deferred();

        owner.md5File( file.source )

            // 如果讀取出錯(cuò)了,則通過reject告訴webuploader文件上傳出錯(cuò)。
            .fail(function() {
                deferred.reject();
            })

            // md5值計(jì)算完成
            .then(function( md5 ) {

                // 與服務(wù)安驗(yàn)證
                $.ajax(server, {
                    dataType: 'json',
                    data: {
                        md5: ret
                    },
                    success: function( response ) {

                        // 如果驗(yàn)證已經(jīng)上傳過
                        if ( response.exist ) {
                            owner.skipFile( file );

                            console.log('文件重復(fù),已跳過');
                        }

                        // 介紹此promise, webuploader接著往下走。
                        deferred.resolve();
                    }
                });
            });

        return deferred.promise();
    }
});

詳情參考:https://github.com/fex-team/webuploader/issues/142

總結(jié)

以上是生活随笔為你收集整理的百度webuploader如何实现秒传与断点续传的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。