将大型 json 字符串从 Javascript 发布到 Django

Posted

技术标签:

【中文标题】将大型 json 字符串从 Javascript 发布到 Django【英文标题】:POST large json string from Javascript to Django 【发布时间】:2019-10-11 23:13:51 【问题描述】:

我有一个简单的小 Cordova (phonegap) 移动应用程序。我需要选择一个文件,填写其他字段并保存表格。然后我想稍后再发送这些数据。

如何保存表单数据: 将 localStorage 中的字段作为序列化数组的 json 字符串,并将 LocalFileSystem 中的文件作为文件中的 reader.readAsText() (只是带有 base64 字符串的文件)。

我如何向服务器发送数据: 我将 base64 字符串推送到我的序列化数组,并将 ajax 发布到服务器字符串化数据。

我的问题: 我无法将大的 json 字符串(当文件 > 2 MB 时)发送到我的服务器,我收到一个错误:code 414, message Request-URI Too Long

我该如何解决这个问题?

【问题讨论】:

你做错了事。从 javascript 发送 HTTP POST 请求。 我做 $.ajax(...) 检查。我添加了答案。 【参考方案1】:

你应该这样做。

$.ajax(
  type: 'POST',
  url: '<URL_HERE>', // where data should be send
  dataType: 'json',
  data: '"a": "b"', // your json data here
  success: function(data) 
      // This will be invoked, if server returns status code 200.
      console.log(data)
  ,
);

【讨论】:

【参考方案2】:

问题出在 Django 设置中!

DATA_UPLOAD_MAX_MEMORY_SIZE - 默认为 2.5 MB (2621440)。

DATA_UPLOAD_MAX_MEMORY_SIZE = 26214400 解决了我的问题 (25MB)

【讨论】:

以上是关于将大型 json 字符串从 Javascript 发布到 Django的主要内容,如果未能解决你的问题,请参考以下文章

无法通过XMLHttpRequest发送大型json数据--javascript

将JSON字符串从IOS Native发送到Javascript(JSON.Parse)时出现Json Parse错误[重复]

使用 ftp:/// 加载大型 json 对象的有效方法

将大型 json 文件从 Firebase 存储传输到 Firestore

如何将大型 JSON 字符串转换为 JSON 对象?

如何将数据从javascript传递到json