加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – NodeJS Web App文件上传切断文件的开头

发布时间:2020-12-16 02:49:12 所属栏目:百科 来源:网络整理
导读:我正在开发NodeJS中涉及文件上传的项目.上传在客户端完成,代码如下: $('#file-upload').bind('change focus click',function() { var file = jQuery(this)[0].files[0]; if (file file.fileName) { var xhr = new XMLHttpRequest(); xhr.upload.addEventLis
我正在开发NodeJS中涉及文件上传的项目.上传在客户端完成,代码如下:

$('#file-upload').bind('change focus click',function() {
    var file = jQuery(this)[0].files[0];
    if (file && file.fileName) {
        var xhr = new XMLHttpRequest();
        xhr.upload.addEventListener('progress',onProgressHandler,false);
        xhr.upload.addEventListener('load',transferComplete,false);
        xhr.open('POST','/upload',true);
        xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
        xhr.setRequestHeader('X-File-Name',encodeURIComponent(file.fileName));
        xhr.setRequestHeader('Content-Type','application/octet-stream');
        xhr.send(file);


        function onProgressHandler(evt) {
            var percentage = event.loaded/event.total*100;
            console.log(percentage);
        }
        function transferComplete(evt) {
            console.log('Done');
        }
    }
});

在服务器端,我使用:

app.post('/upload',function(req,res,next) {
    if(req.xhr) {
        console.log('Uploading...');
        var fName = req.header('x-file-name');
        var fSize = req.header('x-file-size');
        var fType = req.header('x-file-type');
        var ws = fs.createWriteStream('./'+fName)

        req.on('data',function(data) {
            console.log('DATA');
            ws.write(data);
        });
        req.on('end',function() {
            console.log('All Done!!!!');
        });
    }
});

这段代码确实可以单独工作,但是当与我的大型项目的其余部分结合使用时,它似乎会切断大文件的开头,并忽略所有小文件.如果我上传一个小文件,console.log(‘DATA’)永远不会触发,它会触发大文件,但不会触发文件的开头.我相信由于某种原因,它是提前发送文件,当我的功能从头开始(或在小文件的情况下,整个事情)已经发送.不过,我不知道会造成什么.

谢谢!

解决方法

我想到了.我定义的路由与运行的实际文件上传代码之间存在很多逻辑,因为它没有准备好侦听文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读