Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 Node.js-Multipart:XMLHttpRequest获取AJAX POST的进度_Javascript_Node.js_File Upload_Multipart - Fatal编程技术网

Javascript Node.js-Multipart:XMLHttpRequest获取AJAX POST的进度

Javascript Node.js-Multipart:XMLHttpRequest获取AJAX POST的进度,javascript,node.js,file-upload,multipart,Javascript,Node.js,File Upload,Multipart,我必须更新客户端正在上传的文件的大小,就像youtube那样:你上传一个文件,直到它100%上传,你会得到一个到目前为止上传了多少文件的更新。我知道你可以通过multipartreq.files.myFile.size获得某人想要上传的文件的大小,这将为你提供文件的完整大小。但是有没有办法获取磁盘上文件的当前大小?谢谢你 您可以使用XHR2的进度事件来完成此操作,如文档所示。例如: var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload

我必须更新客户端正在上传的文件的大小,就像youtube那样:你上传一个文件,直到它100%上传,你会得到一个到目前为止上传了多少文件的更新。我知道你可以通过multipart
req.files.myFile.size
获得某人想要上传的文件的大小,这将为你提供文件的完整大小。但是有没有办法获取磁盘上文件的当前大小?谢谢你

您可以使用XHR2的
进度
事件来完成此操作,如文档所示。例如:

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.onload = function(e) { ... };

// `progress#uploadProgress` looks something like:
//   <progress id="uploadProgress" min="0" max="100" value="0">0%</progress>
var progressBar = document.querySelector('progress#uploadProgress');
// Listen to the upload progress.
xhr.upload.onprogress = function(e) {
  if (e.lengthComputable) {
    progressBar.value = (e.loaded / e.total) * 100;
    progressBar.textContent = progressBar.value;
  }
};

var form = new FormData(document.querySelector('form#uploadForm'));
xhr.send(form);
var xhr=new-XMLHttpRequest();
xhr.open('POST','/upload',true);
xhr.onload=函数(e){…};
//“progress#uploadProgress”看起来像:
//   0%
var progressBar=document.querySelector('progress#uploadProgress');
//收听上传进度。
xhr.upload.onprogress=函数(e){
if(如长度可计算){
progressBar.value=(e.loaded/e.total)*100;
progressBar.textContent=progressBar.value;
}
};
var form=newformdata(document.querySelector('form#uploadForm');
发送(表格);

这将为您提供整个表单的进度,而不是单个文件的进度。

有没有办法通过xhr收听ajax帖子?因为我必须用ajax上传它,什么时候才能显示进度。非常感谢。哦,是吗?很抱歉我从来没有用过它而且。。。是 啊但问题是,当我console.log(req.files)时,我得到一个空对象,所以。。。那又如何?你确定你正在将正确的表单传递给
new FormData()
,还是在发送前将文件附加到一个空的
FormData
实例中?事实上非常确定<代码>变量表单=新表单数据($('.videoUploadForm')但是videoUploadForm类属于表单本身,我也尝试获取输入字段,但仍然得到相同的结果!有什么建议吗?您需要传入实际的html元素对象,而不是jquery对象,因此将其更改为
var form=new FormData($('.videoUploadForm')[0])