使用ajax调用将base64字节数组下载到文件中

时间:2017-10-20 13:49:14

标签: javascript java jquery ajax spring-mvc

我有以下问题。

我需要发送多个作为JSON请求的一部分附加的文件并将其保存到数据库中。

遵循以下步骤:

  1. 将上传的文件转换为base64字符串,并包含在JSON中,包含其他值。
  2. 在服务器端,使用java,将base64字符串转换为byte []并存储在数据库中。
  3. 下载从数据库检索的文件时出现问题。

    我编写了一个控制器方法来从数据库返回byte []并使用XMLHttpRequest,我正在尝试保存文件。但是在打开保存的文件时出现文件损坏错误。

    下面是我的javascript代码:

                var request = new XMLHttpRequest();
                request.open("POST", 'getAttachment/'+idTemp, true); 
                request.responseType = "blob";
                request.onload = function (e) {
                   if (this.status === 200) {
                      // `blob` response
                      console.log(this.response);
                      var arr = this.response;
                      var byteArray = new Uint8Array(arr);
                      // create `objectURL` of `this.response` : `.pdf` as `Blob`
                      var file = window.URL.createObjectURL(new Blob([byteArray]));
                      var a = document.createElement("a");
                      a.href = file;
                      a.download = this.response.name || fileNameTemp;
                      document.body.appendChild(a);
                      a.click();
                    }
                }
                request.send();
    

    请注意,必须存储和下载所有类型的文件。

0 个答案:

没有答案