Ajax把大型json对象以文件流形式post到后台存储

2017-11-24  本文已影响0人  旻璿

背景

某项目,前端页面需要存储大型json对象,每个json对象约5-10M。

不适合直接存入数据库表中,故准备将JSON对象转为文件,以multipart/form-data的Content-Type,文件形式上传到后台,然后后台只要保存URL地址即可。

处理方法

首先解决json对象转换为文件对象的问题。如下测试代码:

var debug = {hello: "world"};

var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});

let files = new window.File([this.blob], file.name, {type: file.type})

然后解决文件上传的问题,因为json文件是动态生成的,所以页面上不存在<form>标签。

故使用XMLHttpRequest Level 2的一个新接口FormData。

如下测试代码:

var formData = new FormData();

formData.append('file', files);

$.ajax({

    url: '/jsonUpload',

    type: 'POST',

    cache: false,

    data: formData,

    processData: false,

    contentType: false

    }).done(function(res) {

    }).fail(function(res) {});

搞定。

上一篇 下一篇

猜你喜欢

热点阅读