JS 多文件下載并上傳

有些項目,如果服務(wù)器圖片資源不能互相訪問時,需要下載后并上傳到另一個服務(wù)器,網(wǎng)上很多都是轉(zhuǎn) base64 字符串后上傳到服務(wù)器,下面我們試一下下載為 blob 大文件并轉(zhuǎn)為 file 對象進行上傳。

// url 文件地址轉(zhuǎn)為文件對象
function urlToFile(url, fileName) {
    return new Promise((resolve, reject) => {
        fetch(url).then(res => res.blob()).then(blob => {
            let file = new window.File([blob], fileName);
            resolve(file);
        }).catch(error => {
            console.log("error", error);
            reject(error)
        });
    });
}

// 獲取文件對象數(shù)組
function getFileList(urls) {
    return new Promise(async (resolve) => {
        let fileList = [];
        for (let i = 0; i < urls.length; i++) {
            let fileName = urls[i].substring(urls[i].lastIndexOf('/') + 1);
            let file = await this.urlToFile(urls[i], fileName);
            if(file instanceof window.File){
                fileList.push(file);
            }
        }
        resolve(fileList);
    });
}

// 上傳文件對象
function uploadFile(urls){
    return new Promise(async (resolve) => {
        let fileList = await this.getFileList(urls);
        let formData = new FormData();
        for (let i = 0; i < fileList.length; i++) {
            formData.append("files", fileList[i]);
        }
        fetch("http://localhost:8080/upload/img/list", {
            method: "POST",
            body: formData
        }).then(result => result.json()).then(json => {
            console.log("result", json);
            resolve(json);
        })
    });
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容