当前位置: 首页 > 面试题库 >

没有在服务器中保存文件,我无法在Spring MVC中通过Ajax下载文件

皮骏
2023-03-14
问题内容

在一页中,有一个下载文件的链接,例如 \myapp\controller\file?id=45

在控制器中有

        InputStream stream = null;          
        byte [] buffer =someService.getFile(somedata); 
        stream = new ByteArrayInputStream(buffer);
        System.out.println("get file---");
         response.addHeader("Content-Disposition","attachment; filename=report.pdf");

        try {
            IOUtils.copy(stream, response.getOutputStream());
                System.out.println("get file---OK");
        } catch (Exception e) {
            e.printStackTrace();
        }

这项工作正常,但在另一页

         $.ajax({
                type: 'POST',
                url: '${url}',                  
                data: {sdate: $('#date').val() },
                success: function (data) {
                    alert(data)                     
                },
                error:function (xhr, ajaxOptions, thrownError) {
                    console.log("in error");
                } 
            });

在控制台上曾经说过

获取文件-

获取文件-确定

但是浏览器什么也不做。

我添加了成功alert(data)进行调试,它显示了PDF文件的二进制内容,例如:

%PDF-1.4% 3 0 obj <> streamx ͝O $ q )ޑ: U] E d A 1^ h ǃ \ nS X + RI J Y r F

现在,资源管理器如何理解要下载的文件?

由于缺少许可证,我无法保存服务器端的文件


问题答案:

您不能使用ajax下载文件

无论使用

  • jQuery ajax文件下载插件http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
  • 或在服务器端生成文件,然后使用ajax传递url并使用 window.location="fileName"


 类似资料:
  • 在我的服务器中,每小时生成一个文件,通常是250到300 mb,我想下载这些文件并将其放在hadoop下。如果有人有任何想法,请回复如何做。

  • ` ` 在TOmCAT服务器中。我无法运行这个项目。? ` 严重:web应用程序[/SpringMvc4]中的Servlet[spring]抛出了load()异常Java。伊奥。FileNotFoundException:无法打开组织上的ServletContext资源[/WEB-INF/spring servlet.xml]。springframework。网状物上下文支持ServletCont

  • 我使用intelliJ IDEA中的maven webapp原型创建了一个spring项目。我正在使用tomcat插件和maven插件。我可以在app name/home路径上运行这个应用程序,但是css和图像没有加载,它显示的是简单的文本和图像表情。 在项目内部,我创建了ApplicationInitializer类,这很好,ApplicationConfig看起来像这样- 下面是文件夹结构-

  • 问题内容: 我制作了一个脚本,该脚本使用$ .ajax和FormData将两个表单对象传递给PHP。一个表单对象是文本,另一个是文件。它作为独立脚本运行良好。但是,将其作为插件添加到Wordpress后,它一直给我。 我不能序列化formdata,仅仅是因为那样我将无法将文件传递给PHP中的回调函数。 ajax调用之前涉及FormData的JS: 上面的这一部分是100%正确的。 Ajax呼叫:

  • 问题内容: 有什么方法可以在客户端上创建文本文件并提示用户下载文本文件,而无需与服务器进行任何交互?我知道我不能直接写给他们的机器(安全性和全部),但是我可以创建并提示他们保存吗? 问题答案: 您可以使用数据URI。浏览器支持各不相同。 例: 八位字节流将强制进行下载提示。否则,它可能会在浏览器中打开。 对于CSV,您可以使用: