Django的:在含有FORMDATA文件上传阿贾克斯413(请求实体过大)错误(Django: 4

2019-10-23 15:57发布

我Django管理中工作,我已经改变了形式提交创建FORMDATA对象,然后通过AJAX上传与jQuery。

当没有上载了太多的大文件这个伟大的工程,但超过一定限度,我得到击中Nginx上(也可能是uWSGI)告诉我,我的请求对象是太大的误差。 显而易见的解决方案是将该属性设置较高(我们已经被告知要期待500MB的定期上传 - 2GB),但球队警惕在服务器端这造成的问题,老实说,我不知道是否发送1GB HttpRequest的是一个坏主意。

如果没有缺点加大了Nginx的和uWSGI属性,我们将继续和做到这一点。 如果有,我想我的问题就更多关于Django的/ JavaScript和想知道这分块上传的将是最好的方式(用最好的,我希望意味着公司将不得不重新编写的应用程序代码量最少:))

谢谢您的帮助! 罗伯特

Answer 1:

尝试利用Blob界面上载File的对象, Blob.slice()以上传分成许多部分,如果初始sizeBlob超过设定字节长度

 var blob = new Blob(["0123456789"]); var len = blob.size; var arr = []; // if file size exceeds limit , // `.slice()` file into two or more parts if (len > 5) { arr.push(blob.slice(0, 5), blob.slice(5)); }; arr.forEach(function(b, index) { setTimeout(function() { var reader = new FileReader(); reader.onload = function(e) { // do stuff // eg, send `e.target.result` , half of original file object to server // spaced two seconds apart // reassemble "slices" of `Blob` server side document.body.appendChild( document.createTextNode( e.target.result + "\n\n" ) ) } reader.readAsText(b); }, index * 2000); }); 



文章来源: Django: 413 (request entity too large) error upon ajax upload of Formdata containing files