Spring MVC Ajax上传PDF文件进行预览

时间:2016-08-09 12:49:42

标签: java jquery ajax spring file-upload

我正在尝试使用Js插件PDFObject获取PDF文件预览。 为了做到这一点,我将PdfFile发送到我的服务器,并将其保存在特定的文件夹中。这一步非常正常,我将pdf放在正确的文件夹中。

但是当我在ajax响应中将我的Pdf作为字节数组发送并尝试在新标签(或PDFObject标签)中打开它时,我收到文件的加载失败。

客户端:

$.ajax({
    method: "POST",
    url: "documents/preview",
    processData: false,
    contentType: false,
    data: formData,
    success : function(file) {
        window.open("data:application/pdf," + file); 
        PDFObject.embed("data:application/pdf," + file, "#pdf-preview");
    },
    error : function(err) {
        alert("Error : " + err);
    }
  })

服务器:

final File file = new File("path/to/pdf/file.pdf");
response.setContentType("application/pdf");
response.setContentLength(Long.valueOf(file.length()).intValue());
response.setHeader("Content-Disposition", "attachment; filename=" +  file.getOriginalFilename());

fileInputStream = new FileInputStream(fichier);
final byte[] data = IOUtils.toByteArray(fileInputStream);
response.getOutputStream().write(data);

除非我逃避这样的数据:

window.open("data:application/pdf," + escape(file)); 
PDFObject.embed("data:application/pdf," + escape(file), "#pdf-preview");

然后pdf以正确的格式加载并使用正确的页面数量,唯一的是它们没有数据,所有页面都是空白的。

当我检查"文件" Chrome控制台中的变量我在pdf文件的每个流部分中得到了奇怪的东西,如下所示:

>file
"%PDF-1.3
%�����������
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
x�\�r9r��S��nFk����|�=Z�7�ݙ>x�@�-
7(���~_L�a����>�2�(���ٜqHQh

0 个答案:

没有答案