首页 > 解决方案 > _formdataPolyfill2.default 不是当我尝试使用 formdata-polyfill npm 时抛出的构造函数

问题描述

我正在使用网络工作者上传文件,并且我以 formData 对象的形式发送文件,因为我知道网络工作者无权访问 DOM 我使用 formdata-polyfill 代替默认 FormData ,它正在抛出这个错误,我不知道如何正确使用这个 polyill。

这是我的代码,

//trying to send the formdata-polyfill object to worker
require('formdata-polyfill');
    let data = new FormData();
    data.append('server-method', 'upload');
    data.append('file', event.target.files[0]);
    // let data = new FormData(event.target.files[0]);
    if (this.state.headerActiveTabUid === '1')
        this.props.dispatch(handleFileUpload({upload: 'assets', data}));
 //worker.js
 
 var file = [], p = true, url,token;
function upload(blobOrFile) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);//add url to upload
    xhr.setRequestHeader('Authorization', token);
    xhr.onload = function(e) {
    };
    xhr.send(blobOrFile);
}

function process() {
    for (var j = 0; j <file.length; j++) {
        var blob = file[j];

        const BYTES_PER_CHUNK = 1024 * 1024;
        // 1MB chunk sizes.
        const SIZE = blob.size;

        var start = 0;
        var end = BYTES_PER_CHUNK;

        while (start < SIZE) {

            if ('mozSlice' in blob) {
                var chunk = blob.mozSlice(start, end);
            } else {
                var chunk = blob.slice(start, end);
            }

            upload(chunk);

            start = end;
            end = start + BYTES_PER_CHUNK;
        }
        p = ( j === file.length - 1);
        self.postMessage(blob.name + " Uploaded Succesfully");
    }
}

self.addEventListener('message', function(e) {
    url = e.data.url;
    token = e.data.id;
    file.push(e.data.files);
    if (p) {
        process();
    }
});

标签: javascriptnpmweb-workerform-data

解决方案


推荐阅读