Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将文件发送到用户文件夹_Java_File - Fatal编程技术网

Java-将文件发送到用户文件夹

Java-将文件发送到用户文件夹,java,file,Java,File,我正在使用JAXB创建XML文件。我想在用户pc上下载文件。 这是我的代码,实际上它正在为服务器创建文件: OutputStream file = new FileOutputStream("E:\\"+n+".xml"); JAXBContext jaxbContext = JAXBContext.newInstance(F6005.class); javax.xml.bind.Marshaller jaxbMarshaller = jaxbContext.createMarshaller()

我正在使用JAXB创建XML文件。我想在用户pc上下载文件。 这是我的代码,实际上它正在为服务器创建文件:

OutputStream file = new FileOutputStream("E:\\"+n+".xml");
JAXBContext jaxbContext = JAXBContext.newInstance(F6005.class);
javax.xml.bind.Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true));
jaxbMarshaller.marshal(f6005, file);
getServletContext().getRequestDispatcher("/F6207done.jsp").forward(request,  response);

相反,我想在用户单击下载按钮后将文件发送到用户文件夹。我该怎么做?

请求响应的输出流。更改内容类型并发送数据。浏览器将以所述格式呈现文件

OutputStream os = response.getOutputStream();
response.setContentType("text/xml; charset=UTF-8");
jaxbMarshaller.marshal(f6005, os);

我找到了一个解决方案,以防有人需要:

       response.setHeader("Content-Disposition", "attachment; filename="+nn+".xml");
        response.setContentType("text/xml; charset=UTF-8");
        OutputStream outStream = response.getOutputStream();
        javax.xml.bind.Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
        jaxbMarshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true));
        jaxbMarshaller.marshal(f6005, outStream);

请指定,是要将生成的xml保存到服务器端的用户文件夹中,还是强制浏览器将下载的文件保存到客户端计算机上的用户主文件夹中?如果是后者,恐怕很难实现,因为用户可以自由选择存储已加载文件的文件夹。您的代码不完整。它可能丢失了
nse)在末尾。PS:您可以使用just
true
代替
new Boolean(true)
@lospejos是的,我想强制浏览器将文件保存到客户端计算机上的用户主页文件夹,默认下载文件夹如果您想通过后端servlet应用程序直接将文件保存到客户端计算机的用户主页,则答案是否,这是不可能做到的。至少,使用正常/标准的方法,“这是不可能做到的”。要实现这一点,您必须在用户的PC上安装一些附加软件,该软件可以从您那里获取并执行命令(包括在某些文件夹中保存文件)。我尝试了这个方法,浏览器会显示文件,但是它不是自动下载的..你是说你想在没有他的许可的情况下将文件下载到用户系统吗?您是否希望Web应用程序对您的系统执行此操作?是的。假定用户通过web表单引入所需的信息来创建文件,并接收XML文件。在任何情况下,您都不能命令服务器强制向用户系统引入文件。不过,您可以尝试从客户端执行此操作。以下链接可能会有所帮助: