Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript tus-上传后访问控制允许原点错误_Javascript_Node.js_File Upload_Tus - Fatal编程技术网

Javascript tus-上传后访问控制允许原点错误

Javascript tus-上传后访问控制允许原点错误,javascript,node.js,file-upload,tus,Javascript,Node.js,File Upload,Tus,我正在使用和尝试从web浏览器将文件上载到服务器。在较小的文件(10mb ish)上,它似乎工作正常,但在较大的文件(385mb ish)上,它似乎出现了故障,出现了访问控制允许源文件故障 上传进度被调用并一直完成,直到100%,然后失败并出现错误。这让我觉得这个错误与某种类型的验证有关 在控制台中抛出该错误后,它将重试,直到我设置的重试次数限制为止 我已经在下面发布了错误。为什么会发生这种情况 [Error] Origin https://example.com is not allowed

我正在使用和尝试从web浏览器将文件上载到服务器。在较小的文件(10mb ish)上,它似乎工作正常,但在较大的文件(385mb ish)上,它似乎出现了故障,出现了
访问控制允许源文件
故障

上传进度被调用并一直完成,直到100%,然后失败并出现错误。这让我觉得这个错误与某种类型的验证有关

在控制台中抛出该错误后,它将重试,直到我设置的重试次数限制为止

我已经在下面发布了错误。为什么会发生这种情况

[Error] Origin https://example.com is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load https://upload.example.com//saiudfhia1h due to access control checks.
[Error] Failed to load resource: Origin https://example.com is not allowed by Access-Control-Allow-Origin.
此外,在尝试所有重试之后,它也会失败,并出现此错误

tus: failed to upload chunk at offset 0, caused by [object XMLHttpRequestProgressEvent], originated from request (response code: 0, response text: )
前端JS:

var upload = new tus.Upload(file, {
    endpoint: "https://upload.example.com/?id=" + res._id,
    retryDelays: [0, 1000, 3000, 5000],
    metadata: {
        filename: res._id,
        filetype: file.type
    },
    onError: function(error) {
        console.log("Failed because: " + error)
    },
    onProgress: function(bytesUploaded, bytesTotal) {
        console.log(bytesUploaded, bytesTotal, percentage + "%")
    },
    onSuccess: function() {
        console.log("Download %s from %s", upload.file.name, upload.url)

        alert("You have successfully uploaded your file");
    }
})

// Start the upload
upload.start()
后端JS:

server.datastore = new tus.FileStore({
    directory: '/files',
    path: '/',
    namingFunction: fileNameFromUrl
});

server.on(EVENTS.EVENT_UPLOAD_COMPLETE, (event) => {
    console.log(`Upload complete for file ${event.file.id}`);

    let params = {
        Bucket: keys.awsBucketName,
        Body: fs.createReadStream(path.join("/files", event.file.id)),
        Key: `${event.file.id}/rawfile`
    };
    s3.upload(params, function(err, data) {
        console.log(err, data);
        fs.unlink(path.join("/files", event.file.id), (err) => {
            if (err) throw err;
            console.log('successfully deleted file');
        });
    });
});

const app = express();
const uploadApp = express();
uploadApp.all('*', server.handle.bind(server));
app.use('/', uploadApp);
app.listen(3000);

问题是服务器位于CloudFlare后面,每个上传请求都有一个大小限制。将tus客户端设置为将上载分块到多个请求中解决了该问题

您可以在tus js客户端中设置一个属性。这在客户之间可能非常重要。此属性的默认值为
无限

var upload=new tus.upload(文件、{
端点:“https://upload.example.com/?id=“+res.\u id,
retryDelays:[0,1000,3000,5000],
chunkSize:x,//将'x'更改为表示所需chunkSize的数字
元数据:{
文件名:res.\u id,
filetype:file.type
},
onError:函数(错误){
console.log(“由于:+错误而失败”)
},
onProgress:函数(BytesUpload,ByTestTotal){
console.log(字节上传,字节总数,百分比+“%”)
},
onSuccess:function(){
console.log(“从%s下载%s”,upload.file.name,upload.url)
警报(“您已成功上载文件”);
}
})

你是怎么做到的?@Kamil刚刚编辑了更多信息。是的,早些时候我更改了块大小。好容易啊。