javascript - 如何通过 JavaScript 上传多个文件并保持 UI 响应?

标签 javascript asp.net performance amazon-web-services

我有一个网站,需要将 1-50 个文件上传到 Amazon Web Service Bucket。目前的实现方式是循环遍历所有文件并上传。这似乎有效,因为我可以看到前 6 个上传和完成的进度更新。当每一个都完成并且连接变得可用时,我看到新的开始上传。不过,这段时间内 html 页面的响应非常迟钝。用户无法滚动页面。

问题: 上传这样的文件列表的最佳方法是什么?他们应该以某种方式排队吗?或者网络浏览器是否已处理要上传的文件队列?

如何在上传过程中保持 UI 响应?

以下代码为手动输入,如有错别字,敬请谅解。

var files = []; //file is populated with up to ~50 files
files.forEach(function(file){

                var xhr = new XMLHttpRequest();

                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        /* update ui to let user know upload for this file is complete */
                    }
                };

                xhr.upload.onprogress = function () { /* update ui progress indicator in grid for this file upload */ };
                xhr.open("PUT", "http://s3.amazonaws.com/" + AWS_Bucket_Name + "/" + File_Name, true);
                xhr.setRequestHeader("Authorization", "AWS " + AWS_Access_Key + ":" + SignedRequest);
                xhr.setRequestHeader("x-amz-date", Current_Formatted_Date);
                xhr.send(this.file);
});

最佳答案

好吧好吧好吧。

这是每个人通常都会面临的问题。

我们也遇到过,我们正在向服务器上传大约 4GB 的文件,但它卡住了 HTML 浏览器。

所以选项是: 在C#和AJAX中创建一个HTTP文件处理程序来创建一个线程来上传文件

但是,在您的情况下,您要将其上传到亚马逊,最好是在后台创建一个线程并释放浏览器

关于javascript - 如何通过 JavaScript 上传多个文件并保持 UI 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426631/

相关文章:

c++ - 腐 eclipse 太慢 - Opencv

c# - Formview:当用户尝试插入数据时检查记录是否存在 ASP.NET C#

asp.net - 如何向 Web.config 添加密码并对其进行加密

java - 我应该如何并行化计算成本高昂的 for 循环并整理迭代结果?

javascript - 如何进行 Sequelize 更新以返回更新后的对象?

asp.net - 如何安全地获取正在运行的 ASP.NET 站点的域名

mysql - SELECT 查询偶尔会执行很长时间

javascript - 为什么我的文字打印在页面上很快就在js中消失了

javascript - 带有预览和删除,Jquery和Javascript的多图像上传

javascript - python x[1 :2:3] in Javascript?